0

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

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

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

如何使这些测试更稳定?我是否应该将元素的选择包装在一个重复尝试(对于一定数量的迭代)以在迭代之间使用 sleep() 来选择元素的函数中?什么是常见/最佳实践?

4

1 回答 1

0

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

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

再用谷歌搜索,我发现了这个Google Groups discussion。因此,我当前的 Selenium 服务器 2.26.0 似乎不适用于我的 FF 17.0。我通过安装 ChromeDriver 并在 Chrome 上反复运行我的测试进行了验证,每次都通过了。

所以现在我可以:

  1. 尝试编译最新的源代码以获得某种前沿的 Selenium,看看它是否适用于 FF17
  2. 将 FF 降级到 16.0 或更低
  3. 在 2.27.0 到来之前,使用 Chrome(和 IE,和 Opera 等)进行测试

我真的不想降级,所以现在我将采用选项 3 并针对 Chrome 运行我的测试。无论如何,这对我来说只是功能测试的初始设置,因此可以稍后将测试扩展到多个浏览器。

编辑:现在在 Selenium 2.27.0 中再次使用 FireFox

于 2012-11-29T09:35:03.580 回答