硒:间歇性的“找不到元素”问题

2024-06-21

我的硒测试时不时地会随机失败,并出现“未找到元素 X”的错误消息。我通过 ID 进行简单的选择,例如。

click('sideBar_queryButton')

当我使用dom检查器时,该元素就在那里,所以我想知道为什么selenium有时找不到它。当我再次运行相同的测试时,它会起作用或再次损坏,似乎没有可靠的方法来重现它。即使是存在多年的测试似乎也会随机中断,然后又神奇地再次发挥作用。插入一些睡眠语句有时会有所帮助,但并不可靠。所以我想知道我是否使用了错误的方法。还有其他人遇到过硒的这些问题吗?如果有,你是如何解决这些问题的?


Edit:我发现在我的页面中放置一些测试标记并等待它们出现要可靠得多。如果您使用可能在测试中创建竞争条件的异步操作,那么在完成操作后将测试标记插入到 html 中对我来说效果很好。例如。

$('<div>').addClass("testMarker").append("OpXYZFinished").appendTo($('#content'));

这样,您可以执行一个简单的“waitForTextPresent”来查看事情是否成功,并且它比猜测浏览器的加载状态可靠得多。 testmarker 类需要以用户不可见的方式进行格式化(例如字体颜色==背景颜色)。

谢谢你们的评论。在网上进行了一些更深入的挖掘之后 在我们的测试中,我终于发现结合这些语句而不是 简单的 waitForPageToLoad 可以解决我们的问题:

waitForPageToLoad('')
// wait until all ajax activity has ceased. That check's jQuery's $.active
waitForCondition('selenium.browserbot.getUserWindow().$.active == 0', 5000)
// wait a second for all JS to properly initialize
pause(1000)

那里仍然有一个停顿,有点难看,但确实如此 窍门。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

硒:间歇性的“找不到元素”问题 的相关文章

随机推荐

  • 通过 API 获取 Facebook 页面洞察

    使用新的 API 是否可以从您作为管理员的页面获取见解 分析 数据 我可以成功地从我拥有的应用程序获取数据 但不清楚如何对页面执行此操作 如果没有 是否可以从 API 下载数据的 CSV 我已经得到答案了 首先 您必须创建一个应用程序 并请
  • ~/.cabal/config 中的“共享”是什么意思?

    我想 共享 会让cabal install更快 对吧 共享的默认值为 False 我们应该使用 True 还是 False 来共享 thanks 这意味着 还构建动态链接 又名共享 版本的库 这些版本与cabal install cabal
  • 在 C++/CLI 中传递非托管指针

    我正在创建一个依赖于众多 C 静态库的 C CLI 包装器 DLL 一些函数调用需要传入非托管指针 我如何正确地传递它们 此外 其他函数期望 this 指针 作为 void 传入 传递 这个 的正确方法是什么 这是我的班级定义 public
  • 将数据放入短信发送意图中?

    我想发送短信 如果文字太长 我会将其分成多条消息 我试图将一些额外的信息放入 已发送 意图中 以了解哪个部分已发送 以及所有部分何时完成 ArrayList
  • Electron:如何调整BrowserWindow的大小?

    如何在启动时而不是在工作时更改 BrowserWindow 的大小 我找到的所有解决方案都是这样的 var win new BrowserWindow width 800 height 600 show false 您的意思是在创建 Bro
  • Objective-C 中 NSURL 为 null 而 NSString 是正确的

    我有一个NSString包含一个 url 以及当我分配时NSURL与NSString NSURL 输出 空 这是因为url中有一些非法字符 导致NSURL不编码就无法读取NSString包含网址 NSString u incomingUrl
  • Kafka 0.11 如何重置偏移量

    我正在尝试使用 Kafka 的最新 CLI 工具重置消费者偏移量 kafka consumer groups bat bootstrap server kafka host 9092 group my group reset offsets
  • 在for循环中声明和初始化变量

    可以简单写一下吗 for int i 0 代替 int i for i 0 在 C 或 C 中 并且会变量i只能在循环内部访问 它在 C 中有效 它在 C 的原始版本中是不合法的 但在 C99 中被采用为 C 的一部分 当时一些 C 功能被
  • 使用 jquery 提供附加功能时菜单未正确对齐

    I need to make a mega menu similar to one as show in image below 到目前为止 我已经能够在某种程度上使其发挥作用 例如jsFiddle 在这里 http jsfiddle ne
  • SwiftUI 自动调整底部工作表的大小

    SwiftUI 有很多底部工作表的示例 但是它们都指定了使用 GeometryReader 工作表可以增长到的某种类型的最大高度 我想要的是创建一个底部工作表 其高度仅与其中的内容一样高 我使用首选项键提出了下面的解决方案 但必须有更好的解
  • FullCalendar 检查选择日是否有活动?

    我正在使用 Full Calendar js 插件 到目前为止一切顺利 但我想检查开始和结束之间的选择是否有事件 我只需要返回 true 或 false 基本上 如果日期选择中已经存在事件 我想阻止用户创建事件 var calendar c
  • Python 枚举子集迭代

    我想迭代以下枚举的子集 class Items enum Enum item1 0 item2 1 item3 2 item4 3 item5 4 item6 5 item7 6 item8 7 说我想 for item in Items
  • Bootstrap 3 多个导航栏

    我在 Twitter Bootstrap 3 中的多个引导程序中遇到问题 第一个导航栏可以正常调整大小和响应 第二个导航栏在正常分辨率下无法正常工作 但是当我尝试调整大小以响应并调整大小后 它可以正常工作 这是一些代码
  • 如何调试 Silex 框架中的 php 致命错误

    我想知道如何看到这样的语法错误 缺少分号 这将导致 WSOD 白屏死机 我尝试包含一个调试配置文件 如下所示 use Symfony Component Debug ErrorHandler use Symfony Component De
  • Serviceworker Bug event.respondWith

    我的 serviceworker 的逻辑是 当发生获取事件时 它首先获取包含一些布尔值 而不是 event request url 的端点 并根据我正在调用的值检查该值event respondWith 对于当前的获取事件 我正在提供来自缓
  • 未捕获(承诺中)TypeError:无法读取 null popover.js 的属性“模板”

    当我触发时我注意到一个错误 popover dispose 当我上下滚动页面时 函数会发生错误 并且它会减慢我的页面速度 该函数按其应有的方式运行并关闭弹出窗口 但这就是错误Uncaught in promise TypeError Can
  • 出现错误:FT_Open_Face 失败:错误 2

    当我使用时出现以下错误CGContextDrawPDFPage context PDFPage 对于某些文件 有解决办法来解决这个问题吗 FT Open Face failed error 2 错误2看起来像errno2 这是 找不到文件
  • 如何从 App Store Connect 中删除自动创建的 macOS 应用程序

    I have an iOS app Recently macOS app automatically appeared in App Store Connect 我不打算在 macOS 上发布 iOS 应用程序 我怎样才能摆脱它 我打开了
  • 在 Vavr 中结合任一者?

    我有几个Vavr https www vavr io Either https www vavr io vavr docs either的 我想调用一个函数Right每个 Either 的值 例如 Either
  • 硒:间歇性的“找不到元素”问题

    我的硒测试时不时地会随机失败 并出现 未找到元素 X 的错误消息 我通过 ID 进行简单的选择 例如 click sideBar queryButton 当我使用dom检查器时 该元素就在那里 所以我想知道为什么selenium有时找不到它