简体   繁体   中英

Python Selenium: Unable to locate the element by Xpath

I am trying to click a save button via selenium, however, I am getting the error that it is unable to locate the element.

this is the html part of the website

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("xxx")

WebDriverWait(driver,10).until(EC.presence_of_element_located(driver.find_element_by_id("DivFlashViewerMain_SavePdfButtonIcon")))
driver.find_element_by_xpath('//*[@id="DivFlashViewerMain_SavePdfButtonIcon"]').click()

This is the error I am getting:

NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"DivFlashViewerMain_SavePdfButtonIcon"}
(Session info: chrome=74.0.3729.169) (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 10.0.17763 x86_64)

You should use element_to_be_clickable not just presence_of_element_located .

It should look something like this:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("xxx")

button = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID, "DivFlashViewerMain_SavePdfButtonIcon")))
button.click()

Hope this helps!

driver.find_elements_by_css_selector('[id="DivFlashViewerMain_SavePdfButtonIcon"]')[0].click()

Seems like you are using a lot of functions, example for locating id="". Highly recommend trying css-selectors: How to use querySelectorAll only for elements that have a specific attribute set?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM