Python与Selenium"元素未附加到页面文档"

Ete*_*ine 2 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()
Run Code Online (Sandbox Code Playgroud)

点击2个元素后,我收到此错误:

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
Run Code Online (Sandbox Code Playgroud)

你能否告诉我为什么这个错误应用以及我能做些什么来成功通过所有元素?

Wil*_*mer 9

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

import time

time.sleep(1) 
Run Code Online (Sandbox Code Playgroud)

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

  • 有时候,事情真的就是这么简单!谢谢! (2认同)

Bil*_*adj 6

你有解释和元素的解决方案没有附加到DOM:

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

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