簡體   English   中英

Python Selenium onclick 拋出 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_clickableEC.presence_of_element_locatedWebDriverWait

我試着點擊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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM