![](/img/trans.png)
[英]Unable to locate element by xpath using Selenium with Python
[英]Message: no such element: Unable to locate element error finding an element using Xpath Selenium and Python
这是我尝试使用 Selenium 为自动化程序点击的元素:
<input id="btnNextWeek" title="Next Week" onclick="if (this.className != 'mybtndis2') { moveweek(7) }" type="button" value=">>" name="btnNextWeek" class="mybtn2" style="-webkit-appearance: button; padding-left: 8px; padding-right: 8px; height: auto">
收到此错误:
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@title="Next Week"]"} (Session info: chrome=83.0.4103.116)
这是给出错误的代码:
self.driver.find_element_by_xpath("//input[@title=\"Next Week\"]")\
.click()
有什么建议么?
使用这个 - driver.find_element_by_xpath('//input[@title="Next Week"]').click()
这将起作用。始终如果您在使用双引号之前使用单引号来摆脱 escaping 并且我们不需要转义。 在 click() 之前,因为这里。 用于调用方法。
谢谢。
所需的元素是启用JavaScript的元素,因此要单击元素,您必须为element_to_be_clickable()
诱导WebDriverWait并且您可以使用以下任一定位器策略:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.mybtn2#btnNextWeek[title='Next Week'][name='btnNextWeek']"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='mybtn2' and @id='btnNextWeek'][@title='Next Week' and @name='btnNextWeek']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
您可以在以下位置找到一些关于没有此类元素的相关讨论:
可能是找不到元素,因为它在 iframe 中...如果是这样,那么您可以使用
frame = driver.find_element_by_xpath('insert frame xpath')
driver.switch_to.frame(frame)
driver.find_element_by_xpath('//input[@title="Next Week"]').click()
driver.switch_to.default_content()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.