带有 Selenium 的 Python “元素未附加到页面文档”

新手上路,请多包涵

我有一个 python 函数,应该点击产品的所有选项:

 submit_button = driver.find_element_by_id('quantityactionbox')

elementList = submit_button.find_elements_by_tag_name("option")

for x in elementList:
    x.click()

单击 2 个元素后出现此错误:

 selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

你能告诉我为什么会出现这个错误吗?我该怎么做才能成功通过所有元素?

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

阅读 533
2 个回答

您有关于 The Element is not Attached to the DOM 的解释和解决方案:

用于在 Web 应用程序中模拟选项卡式 UI 的一种常用技术是为每个选项卡准备 DIV,但一次只附加一个,将其余部分存储在变量中。在这种情况下,您的代码完全有可能引用不再附加到 DOM 的元素(也就是说,它的祖先是“document.documentElement”)。

如果 WebDriver 在这种情况下抛出过时元素异常,即使该元素仍然存在,引用也会丢失。您应该丢弃您持有的当前引用并替换它,可能是在元素附加到 DOM 后再次定位该元素。

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

克服许多此类错误的简单方法是添加某种延迟:

 import time

time.sleep(1)

触发事件后的 DOM 操作通常需要一些时间,因此您并没有真正损失那么多性能。

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

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