Home > OS >  Python - Element item Xpath with Selenium
Python - Element item Xpath with Selenium

Time:01-18

I'm creating a bot to download a pdf from a website. I used selenium to open google chrome and I can open the website window but I select the Xpath of the first item in the grid, but the click to download the pdf does not occur. I believe I'm getting the wrong Xpath.

I leave the site I'm accessing and my code below. Could you tell me what am I doing wrong? Am I getting the correct Xpath? Thank you very much in advance.

This site is an open government data site from my country, Brazil, and for those trying to access from outside, maybe the IP is blocked, but the page would be this:

Image site

Source site

Edit

Page source code

    import time
    
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium.webdriver.chrome.service import Service
    
    service = Service(ChromeDriverManager().install())
    
    navegador = webdriver.Chrome(service=service)
    
    try:
        navegador.get("https://www.tce.ce.gov.br/cidadao/diario-oficial-eletronico")
        time.sleep(2)
    
        elem = navegador.find_element(By.XPATH, '//*[@id="formUltimasEdicoes:consultaAvancadaDataTable:0:j_idt101"]/input[1]')
        elem.click()
    
        time.sleep(2)
    
        navegador.close()
        navegador.quit()
    
    except:
        navegador.close()
        navegador.quit()

CodePudding user response:

I think you'll need this PDF, right?:

<a  href="https://www.tce.ce.gov.br/downloads/Jurisdicionado/CALENDARIO_DAS_OBRIGACOES_ESTADUAIS_2020_N.pdf" target="_blank"><span >Estaduais</span></a>

You'll need to locate that element by xpath, and then download the pdf's using the "href" value requests.get("Your_href_url")

The XPATH in your source-code is //*[@id="menu-principal"]/div[2]/ul/li[5]/div/div[2]/div/div[1]/ul/li[14]/div/div[2]/div/div[1]/ul/li[3]/a but that might not always be the same.

  • Related