【问题标题】:Python Selenium onclick throws ElementNotInteractableExceptionPython Selenium onclick 抛出 ElementNotInteractableException
【发布时间】:2021-01-08 15:13:24
【问题描述】:

在我想使用 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 的答案,但如果有,并且您提供了链接,我很乐意接受它作为答案。

【问题讨论】:

  • 能把网页链接分享给我们吗?泰
  • 它是浏览器游戏的一部分,没有登录数据就无法访问,因此无法提供没有登录数据的链接。

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

点击元素需要诱导WebDriverWaitelement_to_be_clickable(),可以使用以下Locator Strategies之一:

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

【讨论】:

  • 这会抛出TimeoutException——这就是我要问的原因。怎么可能这个元素看起来是不可点击的?
  • @sampleuser 用ElementNotInteractableException的整个错误跟踪日志更新问题
  • 我提供的 html 中有错字,我已修复此问题,现在您的解决方案运行良好!很抱歉给您带来不便,感谢您的帮助:)
猜你喜欢
  • 2021-10-14
  • 2021-04-27
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2020-11-05
相关资源
最近更新 更多