繁体   English   中英

消息:没有这样的元素:无法定位元素错误使用 Xpath Selenium 和 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.

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