一尘不染

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

selenium

我有一个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

您能否告诉我为什么出现这种错误,以及如何成功完成所有要素?


阅读 433

收藏
2020-06-26

共1个答案

一尘不染

您已经有了解释,并且“元素未附加到DOM”上的解决方案:

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

如果在这种情况下WebDriver抛出陈旧的元素异常,即使该元素仍然存在,该引用也会丢失。您应该丢弃所拥有的当前引用并替换它,可能是通过将元素附加到DOM上再次找到它来进行。

2020-06-26