Problema com IF validando XPATH em Python com Selenium

Titio Buga

Estou tentando raspar um formulário ASPX, e estou tendo dificuldades em fazer um IF para selecionar tipos diferentes de resultados, eu tenho os resultados em branco primeiro e os resultados dos dados depois.

Como faço um IF para validar um XPATH? SE o XPATH for verdadeiro, quero fazer uma coisa, OUTRO, quero fazer outra.

Este é o meu código:

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import openpyxl
from openpyxl import load_workbook
driver = webdriver.Chrome(executable_path=r'C:\Python37\webdriver\chromedriver.exe')

driver.get(".aspx")

planilha = openpyxl.load_workbook('BASE 05-09.xlsx')

sheet = planilha['Aba1']

for Count in range(2,5552):

    box_cpf = driver.find_element_by_xpath(".//*[@id='ctl00_ContentPlaceHolder1_TxtCpf']")
    box_cpf.send_keys(sheet.cell(row=Count, column=5).value)

    pesquisar_bto = driver.find_elements_by_id("ctl00_ContentPlaceHolder1_btPesquisar")[0]
    pesquisar_bto.click()

    if driver.find_element_by_xpath("/html/body/form/div[3]/div[2]/div/table[2]/tbody/tr[4]/td/table[3]/tbody/tr/td/table[1]/tbody/tr[2]/td/div"):
        resultado_pesquisa = driver.find_element_by_xpath("/html/body/form/div[3]/div[2]/div/table[2]/tbody/tr[4]/td/table[3]/tbody/tr/td/table[1]/tbody/tr[2]/td/div")
        sheet.cell(row=Count, column=6).value = resultado_pesquisa.text
    else:
        resultado_pesquisa = driver.find_element_by_xpath("/html/body/form/div[3]/div[2]/div/table[2]/tbody/tr[4]/td/table[3]/tbody/tr/td/table[1]/tbody/tr[2]/td[2]")
        sheet.cell(row=Count, column=6).value = resultado_pesquisa.text

    planilha.save("BASE 05-09.xlsx")
    time.sleep(.5)

    limpar_bto = driver.find_elements_by_id("ctl00_ContentPlaceHolder1_btLimpar")[0]
    limpar_bto.click()
    time.sleep(.5)

driver.quit()

Esse é o XPATH quando eu tenho um resultado vazio:

"/html/body/form/div[3]/div[2]/div/table[2]/tbody/tr[4]/td/table[3]/tbody/tr/td/table[1]/tbody/tr[2]/td/div"

E o XPATH quando eu tiver resultados:

"/html/body/form/div[3]/div[2]/div/table[2]/tbody/tr[4]/td/table[3]/tbody/tr/td/table[1]/tbody/tr[2]/td[2]"

Desculpe se estou perguntando algo tão óbvio, sou novo em python

Servir

O código abaixo entre em espera por linhas, verifique se há resultado vazio e obtenha o valor.

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import openpyxl
from openpyxl import load_workbook


driver = webdriver.Chrome(executable_path=r'C:\Python37\webdriver\chromedriver.exe')
wait = WebDriverWait(driver, 10)

sheet = planilha['Aba1']
driver.get(".aspx")

for Count in range(2, 5552):
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_TxtCpf").send_keys(sheet.cell(row=Count, column=5).value, Keys.RETURN)

    results = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "table[id*='DXMainTable'] > tbody > tr[class*=DataRow]")))
    resultado_pesquisa = results[0].text.strip() if "EmptyDataRow" in results[0].get_attribute("class") else results[0].find_element_by_xpath("./td[2]").text.strip()

    sheet.cell(row=Count, column=6).value = resultado_pesquisa
    planilha.save("BASE 05-09.xlsx")
    time.sleep(.5)

    driver.find_element_by_id("ctl00_ContentPlaceHolder1_btLimpar").click()

driver.quit()

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados