问题标签 [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 投票
1 回答
499 浏览

java - 尝试单击列表中的每个元素

这是我的代码。我想单击的元素 我只单击第一项,然后我得到这个“陈旧的元素引用:元素未附加到页面文档”。单击列表项后,它会展开并出现更多的子列表项,所以如果这是导致问题的原因,请注意。

编辑:我是这样做的,我什至包括了子元素。感谢下面的评论,我终于完成了这项任务。

}

0 投票
1 回答
286 浏览

java - StaleElementReferenceException:陈旧的元素引用:元素未附加到页面文档

我在我的 selenium java 项目中不断收到错误消息。

错误信息是:

线程“主”org.openqa.selenium.StaleElementReferenceException 中的异常:过时的元素引用:元素未附加到页面文档

0 投票
1 回答
632 浏览

python - 消息:过时的元素引用:元素未附加到 Python 中的页面文档

我一直在尝试在三个不同的网络链接中运行以下代码。代码在一个网络链接上运行良好。但是,它会引发有关“消息:过时元素引用:元素未附加到页面文档”的错误消息。我查看了论坛之前的两个线程(Python Selenium stale element fixHow to Navigate to a New Webpage In Selenium?)关于相同的错误消息,但没有解决问题。这是我的代码:

程序适用于此链接 ( https://github.com/alex ),不适用于 ( https://github.com/agronholm , https://github.com/avassalotti )。

任何解决问题的建议。

0 投票
1 回答
641 浏览

java - 使用页面工厂设计模式在页面对象中第二次调用 web 元素会给出过时元素异常

我们有一个带有页面对象和页面工厂设计模式的 UI 框架。在我的一个页面对象类中,我定义了一个 web 元素并调用它。在我的测试步骤类中,当它在一个页面上时,我调用了这个 webelement 一次,当它在另一个页面上时,我再次调用了这个 webelement。下面是我的代码的样子

页面对象类 1:

测试步骤类:

在 webdriver 周围第二次调用它时给了我 staleElementException。此 xpath 是通用 xpath,将在每个页面中使用。这肯定存在于 DOM 中,所以不确定它为什么会给我这个异常?如何在不在每个页面对象类中创建此 web 元素的情况下使用它?

给出的例外是:

org.openqa.selenium.StaleElementReferenceException:过时的元素引用:元素未附加到页面文档

0 投票
4 回答
3034 浏览

java - 使用 PageFactory 时处理 StaleElementReferenceException

使用Pagefactory时我直接声明WebElement如下。

但是,有没有办法处理StaleElementReference异常,因为我在这里没有使用任何 By 对象。我能想到的所有解决方案都要求我使用定位器作为 By 的对象。

我想在父类中为所有处理StaleElementReferenceException. 但问题是我只能将引用作为 aWebElement而不是作为 By 对象传递,这超出了重新初始化WebElement.

我可以找到以下解决方案:

但同样的问题也出现在这里。我需要将引用作为By对象传递,就像PageFactory我有引用一样WebElemrnt

0 投票
1 回答
259 浏览

c# - 在 Selenium 中处理动态表时避免 StaleElementReferenceException

我在处理动态表时遇到了麻烦。

这是我们的表:

每个都<tr>包含以下内容:

我们对元素感兴趣

正在添加到IList<IWebElement>

但是,当尝试访问SendKeys该元素时,第一次它会正常工作,但第二次总是会失败StaleElementReferenceException,这是因为前一个元素(第一个)已经改变,并且页面 DOM 也随之改变。

StaleElementReferenceException如果被抛出,我正在尝试找到一种再次找到元素的方法。

到目前为止,这两种方法都失败了:

方法一

方法二

谢谢你的时间。

0 投票
1 回答
308 浏览

c# - 如何扩展 IWebElement 接口以添加新方法

我正在尝试扩展IWebElementC# 中的接口以添加一种新方法来防止StaleElementReferenceException.

我要添加的方法很简单retryingClick,它将尝试在放弃之前最多单击 WebElement 三次:

添加该方法的原因是我们的网页大量使用了jQuery,并且很多元素是动态创建/销毁的,因此为每个元素添加保护WebElement成为一项巨大的考验。

所以问题就变成了:我应该如何实现这个方法,以便接口IWebElement可以随时使用它?

谢谢,问候。

0 投票
2 回答
6216 浏览

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

我要做的是在登录后,驱动程序将单击属性下拉菜单,选择一个选项并单击提交并重复该过程,直到循环完成。

下面是我的代码:

现在它的驱动程序只需选择第一个选项并单击提交。搜索完成后页面加载后立即出现以下错误:

我试图在我的代码中实现以下代码,但由于我是新手,我不知道如何实现以下来解决问题:

非常感谢任何帮助克服这个问题。谢谢。

0 投票
2 回答
293 浏览

c# - 操作类上的 staleElementReference 错误

因为我们通常将动作类用于 Click 事件。不知何故,我对每个动作类的使用都感到异常。它会在每个操作方法上引发StaleElementReference异常,不适用于单个实例。

调试时也无法单击元素。当我用简单的 Click() 方法替换它时,它工作得很好。但是,我不能使用基于其他一些异常依赖的 click 方法。

可能出了什么问题,

我错过了什么吗?

0 投票
2 回答
839 浏览

python - 使用 Python 迭代时出现 StaleElementException

我正在尝试为亚马逊结果创建一个基本的网络爬虫。当我遍历结果时,有时会到达结果的第 5 页(有时只有第 2 页),然后StaleElementException抛出 a。当我在抛出异常后查看浏览器时,我可以看到驱动程序/页面没有向下滚动到页码所在的位置(底部栏)。

我的代码:

我看过这个问题,我猜可以应用类似的修复,但我不确定如何在页面上找到消失的东西。此外,根据打印语句发生的速度,我可以看到implicitly_wait(10)实际上并没有等待整整 10 秒。

异常指向以“driver.execute_script”开头的行。这是一个例外:

有时我会得到一个 ValueError:

所以这些错误/异常让我相信等待页面完全刷新是有问题的。