PHPUnit / Selenium 2在ajax-heavy webapp上随机失败

时间:2012-11-28 16:12:23

标签: php selenium webdriver phpunit

我的selenium测试失败了PHPUnit_Extensions_Selenium2TestCase_NoSeleniumException异常。但并非总是如此,并不总是在同一个元素上。

我怀疑这与执行速度有关,即执行选择器时元素尚不可见。

我搜索了SO,但主要找到涉及WebdriverWait的Java相关建议(据我所知,不在PHPUnit / Selenium中)或处理旧的Selenium RC命令,如waitForPageLoad等。

如何让这些测试更稳定?我应该在一个函数中包含元素的选择,该函数重复尝试(对于一定的迭代次数)来选择元素,在迭代之间使用sleep()吗?对此有什么共同/最佳实践?

1 个答案:

答案 0 :(得分:0)

我想我发现了这个问题。我最初的想法,即硒需要更多时间来定位元素,似乎是不正确的。 selenium服务器花了一些时间做“执行:[查找元素:...”,但随后立即跟进“执行:[删除会话:...”。

这就解释了为什么sleep()或类似的东西对我的测试没有帮助。

Google搜索了一些,我发现了Google Groups discussion。 所以我现在的Selenium Server 2.26.0似乎不适用于我的FF 17.0。我通过安装ChromeDriver并在Chrome上反复运行我的测试进行了验证,每次都会通过。

所以现在我可以:

  1. 尝试并编译最新资源,以获得各种各样的Selenium 并查看它是否适用于FF17
  2. 将FF降级至16.0或更低
  3. 使用Chrome(以及IE和Opera等)进行测试,直到2.27.0到达
  4. 我真的不想降级,所以现在我将选择3并对Chrome进行测试。这只是我的功能测试的初始设置,所以稍后可以将测试扩展到多个浏览器。

    编辑:现在再次使用Selenium 2.27.0

    使用FireFox