Selenium webdriver 为什么我的Selenium自动化测试套件间歇性失败?

Selenium webdriver 为什么我的Selenium自动化测试套件间歇性失败?,selenium-webdriver,selenium-chromedriver,Selenium Webdriver,Selenium Chromedriver,我的测试套件间歇性失败,抛出错误为“Element not found”,即使在放置了所有类型的等待(waitForPageLoad、Thread.sleep和explicit wait for Element to loaded in a page)之后,它也会间歇性失败 当单独运行同一个测试用例时,它运行良好,有时与n个测试用例一起运行时,它工作良好。当我尝试运行由30到40个测试用例组成的全自动测试套件时,哪一个测试用例会失败并不一致 有谁能帮我找到同样的根本原因吗 我正在以下阶段通过ma

我的测试套件间歇性失败,抛出错误为“Element not found”,即使在放置了所有类型的等待(waitForPageLoad、Thread.sleep和explicit wait for Element to loaded in a page)之后,它也会间歇性失败

当单独运行同一个测试用例时,它运行良好,有时与n个测试用例一起运行时,它工作良好。当我尝试运行由30到40个测试用例组成的全自动测试套件时,哪一个测试用例会失败并不一致

有谁能帮我找到同样的根本原因吗

我正在以下阶段通过maven运行测试套件:

<executions><execution>         
 <phase>site</phase>            
   <goals>              
      <goal>send-mail</goal>            
   </goals>     
</execution> </executions>

场地
寄信

它与Maven的运行阶段有什么关系吗?

我不知道Maven的情况,但是您正在等待页面加载,但这并不一定意味着您想要的元素已经加载

我认为你需要确定你想要的元素确实存在,如果它存在,它是互动的

您说您正在使用Thread.sleep(),但这只会等待一段特定的时间,而没有任何关于页面上是否存在元素的信息

您应该做的是轮询一个元素是否可用。尝试查看显式等待

在这里,您将WebDriverWait和ExpectedCondition这两个元素组合在一起,这样您就可以等待该元素可单击30秒,然后失败

您还说测试在隔离状态下运行良好,但在运行状态下运行不佳。这说明您没有将环境重置为已知状态。一个简单的例子是在每次测试后关闭浏览器,一个更好的方法是为每个测试用例启动一个不可变的VM(或docker容器),以便反复获得相同的内容

尽管在某些情况下,您可能不希望这样做,并查看您的测试如何处理浸泡


不过,保持稳定和可复制性应该是您主要关心的问题。查看测试失败的时间,并确认您想要的元素在该特定时间实际可用。内存泄漏等。。可以降低浏览器速度,使睡眠时间延长3秒,更像20秒。如果您打算等待覆盖缺陷,请使用大量睡眠(记住民意测验更好)来覆盖缺陷,并在缺陷修复期间使您保持稳定

我不知道Maven的情况,但是您正在等待页面加载,但这并不一定意味着您想要的元素已经加载

我认为你需要确定你想要的元素确实存在,如果它存在,它是互动的

您说您正在使用Thread.sleep(),但这只会等待一段特定的时间,而没有任何关于页面上是否存在元素的信息

您应该做的是轮询一个元素是否可用。尝试查看显式等待

在这里,您将WebDriverWait和ExpectedCondition这两个元素组合在一起,这样您就可以等待该元素可单击30秒,然后失败

您还说测试在隔离状态下运行良好,但在运行状态下运行不佳。这说明您没有将环境重置为已知状态。一个简单的例子是在每次测试后关闭浏览器,一个更好的方法是为每个测试用例启动一个不可变的VM(或docker容器),以便反复获得相同的内容

尽管在某些情况下,您可能不希望这样做,并查看您的测试如何处理浸泡


不过,保持稳定和可复制性应该是您主要关心的问题。查看测试失败的时间,并确认您想要的元素在该特定时间实际可用。内存泄漏等。。可以降低浏览器速度,使睡眠时间延长3秒,更像20秒。如果您打算等待覆盖缺陷,请使用大量睡眠(记住民意测验更好)来覆盖缺陷,并在缺陷修复期间使您保持稳定

值得一提的是,我在selenium的webdriver JS和chromedriver中看到了类似的行为。在我更新selenium和chromedriver版本之前,套件在某个特定测试中一直失败,现在它仍然失败,但列表中还有一些测试。非常奇怪。值得一提的是,我在selenium的webdriver JS和chromedriver中看到了类似的行为。在我更新selenium和chromedriver版本之前,套件在某个特定测试中一直失败,现在它仍然失败,但列表中还有一些测试。很奇怪。