问题标签 [staleelementreferenceexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
80 浏览

c# - C# -> stale element reference:切换页面时无法在forloop中继续位置

我目前正在处理的应用程序遇到问题。工具:Selenium、Visual Studio、C#、PageObjecFactory、PageObjectModel

测试总结:我有一个应用程序,我在其中通过电子邮件地址进行搜索:搜索完成后,填充包含客人姓名的“卡片”。我发现的一个问题是某些卡片与电子邮件地址相关联,但名称不匹配。基本上,您必须单击“卡片”才能进入“详细信息”页面并验证您搜索的人是否与该卡片相关联。

为了实现这一点,我构建了一个 for 循环,它遍历“卡片”名称(作为关联方)。我遇到的问题是,当我使用所有卡片导航回原始页面时,我没有继续我的 for 循环。


我不确定是否甚至可以(在 for 循环中)导航到不同的页面,验证信息,然后导航回原始页面并从你在 forloop 中离开的地方继续。

页面模型

测试班

0 投票
1 回答
160 浏览

python - 收到错误“消息:过时的元素引用:元素未附加到页面文档”。我做错了什么

我在 if 语句中收到以下错误:

过时的元素引用:元素未附加到页面文档

0 投票
1 回答
223 浏览

python - Python Selenium execute_script("return window.dataLayer") 返回过时的引用?什么是陈旧的?一切都还在

execute_script()我可以在我正在测试的 AngularJS 路由单页中多次观看运行,因为似乎有很多代码用于execute_script()与浏览器对话。

具体调用如下:

成功多次。

但是在某些时候,相同的命令会从 Selenium 收到 404。我深入研究了python selenium:

在 urllib3 的深处,它与其他时间一样发布:

但是在测试的同一个地方,突然请求的响应是:

我在 Ubuntu 上:

该 ChromeDriver 是通过以下方式找到的:https ://chromedriver.chromium.org/downloads/version-selection

使用 pdb,我仍然可以完美地execute_script(<command>)与页面及其上的所有内容进行交互。并且 URL 没有改变,页面也没有刷新。

似乎以某种方式特定的window.dataLayer(虽然仍然存在并在浏览器开发控制台中完成)是“陈旧的”。它是否缓存在某个地方?在网络驱动程序中?有没有办法阻止它?

我可以建立的唯一联系是,当我只使用 dataLayer 对象进行一次评估时,它似乎没有中断。但是我增强了代码以循环查看 dataLayer(在获取一次之后)。它不会立即变得陈旧。但是在触发 XHR 和其他请求的更大交互之后,它突然说它已经过时了。非常混乱。

我希望这是足以让某人认识到可能是什么原因的信息。

非常感谢!

0 投票
1 回答
66 浏览

python - 尝试从不同链接抓取信息时,旧元素参考元素未附加到页面文档

我在 Python 上使用 Selenium 并尝试移动光标并单击特定元素。这适用于第一个链接,并且 HTML 的结构对于下一个链接是相同的,但是当通过相同的 webdriver 访问第二个链接时,我得到了第二个链接的 StaleElementReferenceException。为什么会发生这种情况,我该如何解决?下面是我正在运行的代码。太感谢了!

0 投票
0 回答
78 浏览

python - python: stale element reference: element is not attached to the page document

I am facing problem error below:

stale element reference: element is not attached to the page document

I have to click value in table form to select the data and process to following steps.

These are my codes, and error line is the last one.

0 投票
1 回答
147 浏览

python - Selenium 功能在点击前检查新鲜度以避免陈旧元素异常

我正在从一个使用 jquery 的站点中抓取数据,有时我会得到 Stale Element 异常,我通过在 try/except 之间引入睡眠来修复该异常。

但是,我想让它更健壮,并且在浏览文档时:https ://selenium-python.readthedocs.io/waits.html#explicit-waits我发现有一种方法可以使用“检查元素是否过时” staleness_of”方法。

但似乎上述语句等待元素过时,这与我正在寻找的相反,即,有没有办法等到元素过时然后继续(如果可能,单击它)?

测试代码:我正在尝试替换 sleep()

0 投票
0 回答
48 浏览

selenium - 获取“selenium.StaleElementReferenceException:过时元素引用:元素未附加到页面文档”

在谷歌中搜索“Selenium”字样,我想选择一个链接在第二页的网站。当自动化根据条件启动时,它会在第一页检查它,因为条件不满足它会转到第二页,此时我得到“selenium.StaleElementReferenceException: stale element reference: element is not attach to the page document ”。我知道第二页中不存在 DOM 中的元素。但我无法解决此异常。请帮助我。enter code here. 我附上了我的代码截图。 我的代码

0 投票
2 回答
40 浏览

java - 如何使用 Try catch 在非返回方法中避免无限递归

公共类样本{

}

如何使用 Try catch 在非返回方法中避免无限递归...例如下面的代码...当 StaleElementException 仅发生一次我想执行“异常之后的函数,如果过时元素第二次出现我想要它去异常捕获并打印断言失败..如何?

0 投票
1 回答
68 浏览

python - 如何防止过时的元素引用并在 selenium 中进行 WebElement 更新?

我是处理 python 和 selenium 的完全新手,一周前才开始,所以请原谅我的代码混乱。我正在尝试从本网站中带有标签名称的元素中提取所有“structure_id”和“d”信息,并将它们中的每一个存储在一个单独的 svg 文件中。这是我遇到问题的代码片段:

这适用于第一页,但我需要提取所有 106 页的路径,并且在按一次“F”(移至下一页)后,我在该行得到一个过时的元素引用structure = path.get_attribute('structure_id')。最初我认为路径需要一些时间来加载,因此是 while 循环,但到了第二页,它被无休止的陈旧元素引用卡住了。

显式等待或刷新页面也不起作用,我怀疑driver.find_element_by_class_nameWebElement 根本没有更新(当我在转到下一页后刷新页面时,我提取的文件最终与第一页相同,无论如何,我在第 5 页得到了一个陈旧的元素参考)。我该如何解决这个问题?任何帮助表示赞赏!

0 投票
1 回答
42 浏览

python - 打开和关闭新选项卡后解决 StaleElementReferenceException 的方法?

所以我有这个项目:它是一个上面有多个 WebElements 的网站。我通过它们的类名找到那些 WebElements(显然它们都有相同的),然后遍历它们以单击它们中的每一个。单击它们后,我必须单击另一个按钮“下一步”。他们中的一些人然后在新标签中打开一个网站(其他人没有)。然后我立即关闭新打开的选项卡,并在收到 StaleElementReferenceException 时尝试遍历下一个元素。

不要误会我的意思,我知道 StaleElementReferenceException 是什么,我只是不知道它为什么会发生。初始网站的 DOM 似乎没有改变,更重要的是:我试图在下一次迭代中达到的 WebElement 仍然是已知的,因此我可以将其打印出来,但不能单击它。

我已尝试通过创建一个新类 CustomElement 来解决此问题,以永久“保存”找到的 WebElement,以便在 DOM 更改后能够访问它们,但这似乎也不起作用。

不管这里有一些代码给你们:

对于那些好奇的人,这里是我设置的解决方法类:

然后我尝试使用 id 并通过 id“重新查找”WebElement(“方式”),但显然被保存的 id 是一个完全不同的 id。

所以我能说什么我真的尽力了,几乎搜索了每个论坛但没有提出一个好的解决方案,我真的希望你能帮我:)

谢谢!