我的硒测试时不时地会随机失败,并出现“未找到元素 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(使用前将#替换为@)