如何避免 Selenium 中的“StaleElementReferenceException”?

2024-04-30

我正在使用 Java 实现大量 Selenium 测试 - 有时,我的测试由于以下原因失败StaleElementReferenceException https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/StaleElementReference.

您能否建议一些使测试更加稳定的方法?


如果页面上发生的 DOM 操作暂时导致元素无法访问,则可能会发生这种情况。为了允许这些情况,您可以在最终抛出异常之前尝试在循环中多次访问该元素。

Try 这个优秀的解决方案来自 darrelgrainger.blogspot.com http://darrellgrainger.blogspot.com/2012/06/staleelementexception.html:

public boolean retryingFindClick(By by) {
    boolean result = false;
    int attempts = 0;
    while(attempts < 2) {
        try {
            driver.findElement(by).click();
            result = true;
            break;
        } catch(StaleElementException e) {
        }
        attempts++;
    }
    return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免 Selenium 中的“StaleElementReferenceException”? 的相关文章

随机推荐

  • 清除另一个应用程序的 Symfony 缓存

    我想通过后端应用程序中的操作清除前端应用程序的缓存 我怎样才能实现这个目标 我相信在 symfony 1 2 中执行此操作的正确方法如下 sfContext switchTo frontend switch to the environme
  • 如何在 Kotlin 中列出字段注释?

    我有一个注释 public interface Field String value 和java类 由它注释 public class Animal Field name private String name 我尝试通过下一个代码列出所有
  • 动态下拉框?

    我有一个名为类别的数据库表 如下所示 我正在尝试做一个动态下拉框 索引脚本显示为
  • 如何使用 C# 在 WinForm 中手动绑定到蓝牙低功耗设备?

    这个问题的回答大多是 Windows UWP 发现后连接到 BLE 设备 https stackoverflow com questions 35420940 windows uwp connect to ble device after
  • 由于配置错误,执行失败:Java 中的 Lambda 代理响应格式错误

    我的函数是通过代理 API 网关调用的 该函数执行正常 但 API 调用返回 502 错误 Mon Dec 30 18 16 25 UTC 2019 Endpoint response body before transformations
  • 在 Windows 上安装 Apache Spark

    我需要安装阿帕奇火花 http spark apache org 在 Windows 机器上 根据文档 我应该在我的机器上安装 sbt 并覆盖其默认选项以使用最大 2G RAM 经过多次尝试后 我决定选择 maven 我覆盖了默认选项以使用
  • 检查类型是否为未知类型

    有没有办法检查类型参数T事实上是unknown type 我知道可以检查any 解决方案在这里 https stackoverflow com a 55541672 11153160 但想知道unknown 最简单的解决方案是这样的 typ
  • CRTP:表达式模板的编译器相关问题

    我遇到了以下代码 存储在 crtp cc 中 的编译器相关问题 include
  • 是否可以在 SignalR hub 方法中返回预编码的 JSON 字符串?

    在 MVC 项目中 我在集线器上有一个与此类似的方法 public string Foo return DoCrazyThingThatReturnsJson 不幸的是 SignalR 或其他东西 接受编码的 JSON 字符串并愉快地对其进
  • 使某些代码只运行一次

    我有一些代码只想在 MainViewController 中运行一次 它应该在每次用户启动应用程序时运行 但仅在 MainViewController 加载后运行 我不想运行它 void applicationDidFinishLaunch
  • 在 Google App Engine 上运行的 Spring Boot Web 应用程序 - 引发 jetty 异常

    当我执行时gradlew appengineRun 我一直得到 Starting a Gradle Daemon subsequent builds will be faster Mar 26 2018 5 47 48 PM java ut
  • 来自 alpine 软件包存储库的 Numpy 无法导入 c 扩展

    我正在制作一个需要 pandas 和 numpy 的 docker 映像 但通过 pip 安装大约需要 20 分钟 这对于我的用例来说太长了 然后我选择从 alpine 软件包存储库安装 pandas 和 numpy 但似乎无法正确导入 n
  • Java日期格式转换

    我目前正在从请求对象中提取三个表单字段输入 日 月 年 该月的第 11 天为 Day 11 12 月为 12 月 今年将是 2010 年 我需要将其转换为 Java Date 对象 但由于发生了很多变化 我不确定将其存储在 java 对象中
  • Code::Blocks 中的单个项目中有多个主要 C++ 文件?

    我不经常写代码 有时我连续 6 个月每天编写代码 然后长达 2 年不编写代码 这种方法迫使我保留一堆我 以及其他更好的程序员 编写的代码或参考代码 时隔很长一段时间 我在写代码时都会提到这个 库 我读了它 我执行了它 这对我精神焕发有很大帮
  • 查找 system.out.println 代码中的位置

    假设我正在一个非常大的项目中工作 并且注意到有一个空的打印行 所以我假设有一个 System out println 位于代码中的某个位置 除了在整个项目中搜索所有出现的 System out println 之外 我该如何尝试找出它在哪里
  • 在 C++ 中类继承的情况下强制延迟方法解析

    考虑以下类结构 class foo public int fun cout lt lt in foo lt lt endl class bar class1 public foo public int fun cout lt lt in b
  • 编译 XNA 项目时,无法执行请求的操作错误

    第二次编译项目时 出现以下错误消息 我必须关闭 VS 2010 重新加载时它会编译 如果我做出改变 那么问题又回来了 无法复制文件 obj x86 Debug MyFile dll 无法对打开的用户映射部分的文件执行请求的操作 我因为另一个
  • Swift NSPredicate 不在

    我有一个包含 X 个项目的数组 我需要通过 uid 过滤掉特定项目 我写了以下谓词 我认为它是正确的 我面临的问题是 Swift 编译器只允许我使用接受 argumentArray 的初始化程序 let uids 34885a9f0897f
  • 首选的跨平台 IPC Perl 模块是什么?

    我想创建一个简单的 IO 对象 它代表一个向另一个程序打开的管道 我可以在应用程序运行时定期写入另一个程序的 STDIN 我希望它是防弹的 因为它可以捕获所有错误 并且是跨平台的 我能找到的最佳选择是 open sub io read lo
  • 如何避免 Selenium 中的“StaleElementReferenceException”?

    我正在使用 Java 实现大量 Selenium 测试 有时 我的测试由于以下原因失败StaleElementReferenceException https developer mozilla org en US docs Web Web