[英]Copy xpath Doesn't Provide Correct xpath?
我一直在嘗試使用python中的硒包單擊按鈕。 不過,我一直在弄不清楚如何識別按鈕。 經過太多時間后,我嘗試從javascript控制台手動復制xpath
,但是在嘗試調用driver.find_element_from_xpath('<xpath>')
時收到NoSuchElementException
。
我真的不確定這怎么可能。 HTML非常長-我最終試圖定位的內容嵌套在多個表,正文,td,tr標簽下。 這是元素:
<a href="Javascript:void" onclick="javascript:toggleDisplay(this, trAK);return false;">Alaska</a>
當我在Chrome中點擊“復制Xpath”時,它返回了以下字符串: //*[@id="Form1"]/table/tbody/tr[3]/td/table/tbody/tr[1]/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[5]/td/table/tbody/tr[3]/td/table[1]/tbody/tr[1]/td[2]/a
我對此很陌生,因此任何人都可以幫助我了解為什么這不起作用和/或我可以做些什么來解決它?
所需的元素是啟用JavaScript的元素,因此要對元素click()
就必須為element_to_be_clickable()
誘導WebDriverWait ,並且可以使用以下兩種定位器策略之一 :
使用LINK_TEXT
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Alaska"))).click()
使用(邏輯) XPATH
(而不是絕對xpath):
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@onclick, 'toggleDisplay') and text()='Alaska']"))).click()
注意 :您必須添加以下導入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.