问题标签 [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.
java - 在没有 StaleElementReferenceException 的情况下,使用 Selenium 和 Java 在网站上查找所有损坏的链接的最佳方法是什么?
我正在尝试使用 Selenium for Java 在网页上查找所有损坏的链接。我用一个简单的教程尝试了它,它似乎可以在非常基本的网站上运行,但就我而言,DOM 似乎发生了变化,我经常得到一个StaleElementReferenceException
.
我不太确定如何防止出现该异常或如何处理它。在这种异常的情况下,我基本上想跳过那个 URL 并继续我的循环。但是由于忽略异常是一种非常糟糕的做法,我想问你们如何更改我的代码以很好地处理异常。
java - 我什至可以使用列表吗在 Selenium 中没有 StaleElementException?
类似的问题已经被问了一百万次,但我仍然没有找到解决这个问题的正确方法。
第一个问题:遍历 Selenium 中的 Webelements 列表是不好的做法吗?
我是 Java 列表的忠实粉丝。通常我会找到我感兴趣的所有 WebElement 并对其进行迭代。但是如果你这样做,那么你经常会得到一个 StaleElementException。我知道 StaleElementException 是什么,但在仍然使用列表的同时我无法找出防止它们的正确方法。
在以下情况下你们会怎么做:我的 web 应用程序中有一堆图块,我需要单击并检查结果是否正常。我很想做这样的事情,但它通常会导致 StaleElementException:
有没有办法仍然使用列表并且永远不会获得过时的元素?我可以在不使用“By”而是使用“旧”WebElement 的情况下重新查找元素吗?
就像是:
否则,我什至如何在我的代码中描述从我拥有的那十几个图块中找到一个旧的 WebElement,因为它们没有唯一的 ID?
python-3.x - 迭代动态可迭代对象时出现 StaleElementReferenceException
我想通过循环浏览所有 webElements 来向下滚动网站,我正在这样做:
不幸的是,几秒钟后滚动条停止并且控制台向我抛出了这个异常:
寻找解决方案我搜索了很多网页,现在我知道为什么会出现这种错误。我试图通过使用 try/except 来解决这个问题,它可以工作,但当然它并不能解决问题的本质。我想知道有没有更好的方法来解决我的问题?
python - StaleElementReferenceException:消息:过时的元素引用:元素未使用 Selenium 和 Python 附加到页面文档
我正在为一个包含下拉菜单的网站开发 selenium。
首先,我们有基本代码:
然后我正在实施该部分以处理下拉菜单。我的目标是为每个下拉选项执行一些操作。
当我在做:
它工作得很好。
但是,当我为每个下拉选项执行一些操作时:
然后只有第一个下拉选项运行,然后显示错误:
谁能帮我解决这个问题?谢谢
c# - 组的第二次和进一步测试中的 StaleElementReferenceException
我有很多例子的specflow测试,所以如果我单独运行测试都通过了。但是当我将它们作为一个组运行时,只有第一次通过,其他失败并出现 OpenQA.Selenium.StaleElementReferenceException : stale element reference: element is not attach to the page document
场景是通过单元格中的数据查找第一行并通过单击带有菜单图标的单元格来验证菜单中的项目这是我用来执行此类场景的类。
可能是什么问题呢?我是编写此类自动测试的新手,所以不要过多地责骂代码)
selenium - Selenium 在 for 循环中返回上一页
我正在制作一个抓取器来抓取一个博彩网站的数据,这是一个示例代码,它将抓取事件、团队和赔率。这个想法是迭代所有可用于这项运动的比赛。我能够找到链接并单击第一个链接,然后我还能够抓取数据并将其返回到列表中(稍后将被放入数据库中)。 我的问题是我无法返回上一页单击下一个链接,尝试执行此操作时出现错误。这是我的代码:
它返回此错误:
引发异常类(消息、屏幕、堆栈跟踪)
StaleElementReferenceException:陈旧的元素引用:元素未附加到页面文档(会话信息:chrome = 84.0.4147.105)
我该如何解决这个问题,我认为问题出在 driver.back() 上,我也尝试了 l.back(),但它仍然无法正常工作。
selenium - 页面刷新后要求逻辑避免“StaleElementReferenceException”
我在网页上有多个链接。单击链接后,将打开一个弹出窗口,我在弹出窗口中的字段上设置一些值,然后单击“保存”。
单击“保存”后,主网页会刷新以显示链接的更新状态。我使用“for”循环逐个遍历所有链接并更新状态。为了避免过时的元素引用,我编写了一个实用程序来检查元素是否仍然过时,但我无法摆脱这个异常。
下面是我的实用程序代码:
下面是我的页面对象代码:
下面是我的类代码:
我认为 while 循环中的代码在刷新页面之前执行,因此我仍然遇到过时元素异常。
下面是使用 thread.sleep 工作的代码:
Q1)上面的代码解析了状态元素引用,但我想避免使用thread.sleep。
Q2)我不得不把我的定位器像“docCheckTable”放在我的可执行类中,而不是放在页面对象工厂类中。如何将我的所有定位器放在返回 Web 元素列表并避免过时元素异常的页面对象类中。