我的硒测试时不时地会随机失败并显示“找不到元素 X”的错误消息。我通过 ID 做一个简单的选择,例如。
click('sideBar_queryButton')
Run Code Online (Sandbox Code Playgroud)
当我使用 dom 检查器时,元素就在那里,所以我想知道为什么 selenium 有时找不到它。当我再次运行相同的测试时,它会工作或再次中断,似乎没有可靠的方法来重现它。即使是已经存在了很长时间的测试似乎也会随机中断,然后又神奇地再次起作用。插入一些睡眠语句有时会有所帮助,但并不可靠。所以我想知道我是否使用它不正确。有没有其他人遇到过硒的这些问题,如果有,你是如何解决的?
编辑:我发现在我的页面中放置一些测试标记并等待它们出现要可靠得多。如果您使用可能在测试中创建竞争条件的异步操作,那么在完成操作后将测试标记插入到 html 中对我来说效果很好。例如
$('<div>').addClass("testMarker").append("OpXYZFinished").appendTo($('#content'));
Run Code Online (Sandbox Code Playgroud)
这样,您可以执行一个简单的“waitForTextPresent”来查看事情是否成功,并且它比猜测浏览器的加载状态可靠得多。testmarker 类需要以用户不可见的方式进行格式化(例如字体颜色==背景颜色)。
谢谢你们的评论。经过在网上进行更深入的挖掘和我们的测试,我终于发现结合这些语句而不是简单的 waitForPageToLoad 可以解决我们的问题:
Run Code Online (Sandbox Code Playgroud)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)那里仍然有一个停顿,这有点难看,但它确实起到了作用。
| 归档时间: |
|
| 查看次数: |
2095 次 |
| 最近记录: |