当前位置: 首页 > 面试题库 >

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

荀博
2023-03-14
问题内容

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

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


问题答案:

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

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

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



 类似资料:
  • 所以我正在尝试制作一个在flickr上运行的程序,我已经准备好了所有的东西,直到cookies弹出,它打败了我。 我正在尝试切换到这个iframe,这样我就可以使用“全部接受”按钮。然而,iframe的ID是动态的,所以为了避免这个问题,我尝试以标题为目标。 但是我现在收到了这个错误消息。 我已经尝试添加了10秒的等待时间来给它加载时间,我知道错误的原因是元素不再连接到DOM,但我不知道要使用什么

  • 我的程序抛出一条错误消息“stale element reference:element未附加到页面文档”。当我查看前面的帖子(如Python Selenium陈旧元素修复)时,我发现我没有在调用click函数后更新url。我更新了网址。然而,它并没有解决这个问题。谁能指出我哪里出错了?下面是我的代码:

  • 我正在尝试访问一系列的网页和递归。访问一个页面,然后返回,然后移动到下一个页面,依此类推。用我的代码,我可以访问第一页,然后返回到上一页,但我不能访问下一页,并得到一个陈旧的元素引用错误。我通读了关于这个错误的答案,但仍然不知道我的代码在哪里更改了状态... 下面是我的代码

  • 我得到了这个错误,当我试图点击一个下拉ID: 我想用这个代码: 有没有什么方法可以防止无限循环,或者更好的方法在我得到这个异常后点击id?

  • 我正在构建一个刮网站的c#应用程序。我认为这个问题是因为页面在一次又一次提交表单后被重新加载而导致的。我必须从选择列表中选择一个选项,然后按回车键,等待页面重新加载新结果。但是重新加载后会导致此错误; 我的代码是这样的; 我也尝试过类似的东西; 时间不多了,我有个例外,时间不多了。

  • 我使用selenium从网站的表格中获取数据,以进行分析。我必须扫描一张大约1000行的表格。 我知道这个页面有Javascript,可以自动更新DOM。但是表中的行太多了,所以当我扫描代码时,总是抛出一个异常。 我尝试了这个代码: 它抛出一个异常,如: 陈旧元素引用:元素未附加到页面文档。 你有办法解决我的问题吗?我认为使用多线程是最好的方法。 但是我尝试了多个,它也返回异常。 我认为在得到。把