提问人:Gary P 提问时间:10/6/2023 更新时间:10/6/2023 访问量:68
元素不可交互错误:Selenium Python 表单自动填充
Element not interactable error : Selenium Python form automate filling
问:
我正在使用 Selenium 自动填写在线表格。我在复选框上遇到了问题。以下是页面元素列表:
检查复选框时,将标识以下元素:
这是我的剧本
checkbox = browser.find_element(By.CLASS_NAME, "iCheck-helper")
checkbox.click()
所以我找不到元素的 ID,我改用类名。我收到以下错误:
selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互
所以,我认为这个复选框有多个图层,我可能没有使用正确的元素???不确定
任何帮助都是值得赞赏的。提前致谢
我尝试了多种方法。尝试了附近的所有元素,但它们不起作用。
我也试过等待,时间不是问题,页面已满载,我可以看到复选框。
答:
假设您的选择器是正确的(根据您提供的内容,情况似乎如此),则可能导致“元素不可交互”错误的原因有很多:
计时或同步问题:该元素尚未出现在 DOM 上或尚不可交互。
元素不可见或被遮挡:另一个元素可能遮挡了您尝试与之交互的元素,或者该元素不在页面上的可见区域内。
iFrame 问题:您尝试与之交互的元素嵌套在 iframe 中。
对于前两个原因,上面建议的线程可能会有所帮助。但是,如果问题与 iframe 相关,则必须先在脚本中切换到 iframe,然后才能与脚本中的任何元素进行交互。
根据您的描述,似乎有可能正在使用 iframe。此外,类名(例如 iCheck-helper)让我感觉到您可能正在处理 iframe,但这可能只是巧合。如果 iframe 是使用 iframe 标记(这很常见)实现的,则可以通过在“元素”选项卡下的开发工具中搜索“iframe”来运行快速检查。
如果这些都不起作用,您可以尝试使用 execute_script() 使用 js 打开复选框。
评论
<ins>
<input>