[英]Selenium Python: 'ElementNotInteractableException'
[英]Python Selenium onclick throws ElementNotInteractableException
在我想使用 Selenium 進行交互的網站上,有 html 代碼的以下部分:
<a href="#" onclick="editToggle('default_name_span', 'edit_name')">
<img src="img/rename.png?1" alt="change name" title="change name">
</a>
這顯示了一個小圖像,單擊該圖像可更改該網頁上項目的名稱。 我試過
webdriver.find_element_by_css_selector("a[onclick*=edit_name]").click()
其中webdriver
是我的selenium.webdriver
實例。 不幸的是,這會拋出ElementNotInteractableException
。 我嘗試了 5 秒的虛擬等待,以及EC.element_to_be_clickable
和EC.presence_of_element_located
與WebDriverWait
。
我試着點擊img
。 這沒有錯誤但沒有在網頁上產生任何(可見的)結果。
還嘗試使用 XPATH:
WebDriverWait(webdriver, 15).until(EC.presence_of_element_located((By.XPATH, '//*[@id="default_name_span"]/a')))
WebDriverWait(webdriver, 15).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="default_name_span"]/a')))
webdriver.find_element_by_xpath('//*[@id="default_name_span"]/a').click();
這會引發相同的異常。
我怎樣才能點擊這里? 有任何想法嗎?
我沒有在 SO 上找到答案,但如果有一個並且你提供了鏈接,我會很樂意接受它作為答案。
要單擊您需要為element_to_be_clickable()
引入WebDriverWait的元素,您可以使用以下任一定位器策略:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[onclick^='editToggle']>img[alt='change name'][title='change name']"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(@onclick, 'editToggle')]/img[@alt='change name' and @title='change name']"))).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.