簡體   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