使用Selenium Webdriver可以达到100%的通过率吗?

时间:2015-04-14 07:43:29

标签: java selenium-webdriver

我正在使用Selneium Web驱动程序+ Java + firefox,我对selenium的行为很生气。

目前我在CI中运行了300多个测试,测试执行需要将近5个小时才能完成。

我关注的是,每次看到测试结果时,300次测试中都会有大约5-6次失败,而不是应用程序失败。

我看到的这些5-6次失败并不一致,这意味着,每次观察都没有明确的5次失败。

在每次运行中,我都会看到不同的故障。

是的,10次跑步中有3次我看到100%合格率。

我遇到的异常主要是StaleElementReference异常和NoSuchElement异常。

是的,我处理了AJAX调用并且有必要的显式等待和隐式等待。

这是硒的行为方式吗?难道我们不能始终如一地获得100%的合格率吗?

我知道这个问题过于笼统。但我真的很沮丧,想知道我是唯一面对这个问题的人还是其他人。

2 个答案:

答案 0 :(得分:2)

是的,如果您的测试写得很好,您可以在Selenium测试中获得100%的通过率。

你所拥有的是片状测试。见http://martinfowler.com/articles/nonDeterminism.html

答案 1 :(得分:1)

是的,您可以获得100%的通过率,但这实际上取决于您的测试环境设置。您必须通过等待等方式同步所有元素,但在某些情况下,webdriver和Web浏览器之间的通信仍然会失败(但新版本有所改进)。所以基本上用webdriver间歇性测试更常见。因为您没有写更多细节,所以有一些通用选项:

  • 在几次测试后(例如在每个测试类之后)重新启动Web浏览器
  • 记住测试失败并在测试环境中使用一些重新运行机制
  • 使用屏幕截图来映射测试/浏览器状态,如果出现故障,您将看到它并且您可以调查可能的(同步)问题

这些选项更像是解决方法,而不是正确的解决方案。对于webdriver,同步测试状态和Web浏览器状态非常重要。