你如何修复“元素不可交互”异常?

新手上路,请多包涵

我知道这已经被问过很多次了,但是你如何绕过“元素不可交互”的异常呢?

我是 Selenium 的新手,所以如果我弄错了,请原谅。

这是我的代码:

 button = driver.find_element_by_class_name(u"infoDismiss")
type(button)
button.click()
driver.implicitly_wait(10)

这是 HTML:

 <button class="dismiss infoDismiss">
    <string for="inplay_button_dismiss">Dismiss</string>
</button>

这是错误消息:

 selenium.common.exceptions.ElementNotInteractableException: Message:

在说消息之后,实际上什么都没有。

我花了很多时间在网上搜索,但没有找到可以解决我的问题的任何东西。我真的很感激一个答案。

提前致谢。

编辑: 将“w”更改为驱动程序,以便于阅读

更新: 我刚刚意识到我找到了错误按钮的 HTML!真正的按钮 HTML 如下:

 <button class="dismiss">
    <string for="exit">Dismiss</string>
</button>

此外,我使用了答案和评论并将我的代码编辑为如下所示:

 button = driver.find_element_by_css_selector("button.dismiss")
w.implicitly_wait(10)
ActionChains(w).move_to_element(button).click(button)

现在我收到一个新错误:

 selenium.common.exceptions.WebDriverException: Message: Tried to run command without establishing a connection

错误发生在第 1 行: button = driver.find_element_by_css_selector("button.dismiss")

注意: 非常感谢您提供的帮助,谢谢

原文由 Rolodophone 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 716
1 个回答

一种可能是该元素当前不可点击,因为它不可见。这样做的原因可能是另一个元素正在覆盖它或者它不在视图中,即它在当前可查看区域之外。

尝试这个

from selenium.webdriver.common.action_chains import ActionChains

button = driver.find_element_by_class_name(u"infoDismiss")
driver.implicitly_wait(10)
ActionChains(driver).move_to_element(button).click(button).perform()

原文由 EyuelDK 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题