[英]Selenium Python: Element is not clickable
我正在使用 selenium 測試使用 python dash 創建的 webapp。 我試圖單擊一個選項卡,但總是得到ElementClickIntercepted Exception
。
注意:當然我偶然發現了類似的問題,但大多數時候問題是元素無法被點擊,因為它還沒有加載——我已經內置了等待。 - 或者另一個元素會收到點擊的事實也不是這種情況。 請注意,第一項始終是預先選擇的,我想選擇第二項
#Selct X-Axis
x_axis = driver.find_element(By.XPATH, "//*[@id='navbar']/a[2]")
x_axis.click()
driver.implicitly_wait(2)
try:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//a[text()='Even']"))
)
except:
raise Exception
even= driver.find_element(By.XPATH, "//a[text()='Even']")
even.click()
異常快照:
HTML 快照:
根據您發布的內容, By.XPATH, "//a[text()='Even']"
可能正在選擇與您期望的不同的 HTML 元素。
似乎有一個帶有以'Even'
開頭的文本的<a>
,但是您沒有顯示任何文本等於'Even'
。
順便說一句,在提問時,您至少應該將相關的 HTML 粘貼為文本,而不是屏幕截圖。
在 XPath 中使用contains(text(), 'even')
代替text()='even'
。 因為, text()='even'
意味着文本必須是 'even' 但不包含 'even',並且在您的 HTML 代碼中,文本似乎不僅有 'even'。
要單擊任一元素而不是 present_of_element_located ()您需要為element_to_be_clickable()誘導WebDriverWait並且您可以使用以下任一定位器策略:
$$$ 回應:
使用PARTIAL_LINK_TEXT :
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Response"))).click()
使用XPATH :
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[starts-with(@id, 'content')]//ul//div[@class='nav-item']//a[contains(., 'Response')]"))).click()
甚至$$$ :
使用PARTIAL_LINK_TEXT :
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Even"))).click()
使用XPATH :
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[starts-with(@id, 'content')]//ul//div[@class='nav-item']//a[starts-with(., 'Even')]"))).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.