Selenium:间歇性的“未找到元素”问题

时间:2011-05-11 08:01:48

标签: selenium

我的selenium测试偶尔会失败并显示“找不到元素X”错误消息。我按ID进行简单的选择,例如

click('sideBar_queryButton')

当我使用dom检查器时,元素就在那里,所以我想知道为什么硒有时候找不到它。当我再次运行相同的测试时,它会工作或再次中断,似乎没有可靠的方法来再现它。即使是那些年龄段的测试似乎也会随机打破,然后再次神奇地工作。插入一些睡眠语句有时会有所帮助但不可靠。所以我想知道我是否错误地使用它。有没有其他人有硒这些问题,如果是这样,你是如何解决它们的?

1 个答案:

答案 0 :(得分:1)

编辑: 我发现在我的网页中放置一些测试标记并等待它们出现会更加可靠。如果您使用可能在测试中创建竞争条件的异步操作,则在完成操作后将测试标记插入到html中对我来说非常好。 E.g。

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

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

  

感谢您的所有评论。在网上进行了一些深入挖掘之后   在我们的测试中,我终于发现将这些语句组合而不是一个   简单的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)
     

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