元素不可交互错误:Selenium Python 表单自动填充

Element not interactable error : Selenium Python form automate filling

提问人:Gary P 提问时间:10/6/2023 更新时间:10/6/2023 访问量:68

问:

我正在使用 Selenium 自动填写在线表格。我在复选框上遇到了问题。以下是页面元素列表:

页面元素

检查复选框时,将标识以下元素:

这是我的剧本

checkbox = browser.find_element(By.CLASS_NAME, "iCheck-helper")
checkbox.click()

所以我找不到元素的 ID,我改用类名。我收到以下错误:

selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互

所以,我认为这个复选框有多个图层,我可能没有使用正确的元素???不确定

任何帮助都是值得赞赏的。提前致谢

我尝试了多种方法。尝试了附近的所有元素,但它们不起作用。

我也试过等待,时间不是问题,页面已满载,我可以看到复选框。

Python 表单 selenium-webdriver 元素 自动填充

评论

0赞 MT756 10/6/2023
你可以试试这个 如何修复“元素不可交互”异常?
0赞 John Gordon 10/6/2023
这是一个要素。它不是一个元素,或一个按钮,或一个链接,或任何可以点击的元素......<ins><input>

答:

0赞 Shyamal Raju 10/6/2023 #1

假设您的选择器是正确的(根据您提供的内容,情况似乎如此),则可能导致“元素不可交互”错误的原因有很多:

计时或同步问题:该元素尚未出现在 DOM 上或尚不可交互。

元素不可见或被遮挡:另一个元素可能遮挡了您尝试与之交互的元素,或者该元素不在页面上的可见区域内。

iFrame 问题:您尝试与之交互的元素嵌套在 iframe 中。

对于前两个原因,上面建议的线程可能会有所帮助。但是,如果问题与 iframe 相关,则必须先在脚本中切换到 iframe,然后才能与脚本中的任何元素进行交互。

根据您的描述,似乎有可能正在使用 iframe。此外,类名(例如 iCheck-helper)让我感觉到您可能正在处理 iframe,但这可能只是巧合。如果 iframe 是使用 iframe 标记(这很常见)实现的,则可以通过在“元素”选项卡下的开发工具中搜索“iframe”来运行快速检查。

如果这些都不起作用,您可以尝试使用 execute_script() 使用 js 打开复选框。

评论

0赞 Gary P 10/6/2023
它不是 iframe,我破坏了源代码,没有 iframe 标签。我也用了我用了 is_displayed(),元素没有显示
0赞 Shyamal Raju 10/6/2023
还行。您还提到您尝试过在附近使用其他元素 - 您是否尝试过:i) 使用输入选择器(type=“checkbox”)而不是上面建议的 ins?ii) 在点击之前尝试过move_to_element?如果这些都不起作用,那么是的,您的元素很可能按照您的建议被遮挡/重叠。在这种情况下,您可以使用 execute_script() 使用 js 打开复选框。