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_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 上找到答案,但如果有答案并且你提供给我 link,我很乐意接受它作为答案。

点击需要诱导的元素 for the element_to_be_clickable() and you can use either of the following :

  • 使用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