【问题标题】:PHPUnit / Selenium 2 randomly failing on ajax-heavy webappPHPUnit / Selenium 2 在 ajax-heavy webapp 上随机失败
【发布时间】:2012-11-16 13:30:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php selenium webdriver phpunit


    【解决方案1】:

    我想我找到了问题所在。我最初的想法是,硒需要更多时间来定位元素,这似乎是不正确的。 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

    【讨论】:

      猜你喜欢
      • 2014-02-24
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2014-09-14
      相关资源
      最近更新 更多