优化并行执行的Selenium测试

优化并行执行的Selenium测试,selenium,selenium-webdriver,phantomjs,selenium-grid,Selenium,Selenium Webdriver,Phantomjs,Selenium Grid,目前,我在Selenium网格上设置了五个phantomjs实例,它们都位于不同的节点上。我试图同时运行5个并行测试,但其中一些测试将失败。每一次,它都是一个不同的测试,将在不同的线路上失败 我还加入了等待和断言,以等待元素出现,但每次测试用例仍在不同的位置失败。然而,当我一个接一个地运行测试时,所有测试都100%通过 有什么方法可以优化我的测试以实现并行执行吗 我的测试是在Windows环境中用Java编写的。我使用的是phantomjs 1.9.8和Selenium 3.54,这是一个轶事:

目前,我在Selenium网格上设置了五个phantomjs实例,它们都位于不同的节点上。我试图同时运行5个并行测试,但其中一些测试将失败。每一次,它都是一个不同的测试,将在不同的线路上失败

我还加入了等待和断言,以等待元素出现,但每次测试用例仍在不同的位置失败。然而,当我一个接一个地运行测试时,所有测试都100%通过

有什么方法可以优化我的测试以实现并行执行吗


我的测试是在Windows环境中用Java编写的。我使用的是phantomjs 1.9.8和Selenium 3.54,这是一个轶事:当我发现我的测试在我的机器上运行良好,但在网格节点上运行不太好时,这通常是一个时间问题。我的工作站比我的VMs网格节点强大得多,因此简单的动画渲染需要更长的时间。我编写了一个.ClickViaJavaScript来代替.Click。在js点击后,我还进行了500毫秒的睡眠

// Click element via JavaScript
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click()", element);
// Wait a moment
System.Threading.Thread.Sleep(500);

只要在运行时不更改全局变量,并且每个测试都是原子的,并行并不真正需要重写任何代码。

我认为您应该尝试确定瓶颈:可能是内存、冲突资源——几乎任何东西。一旦你知道它是什么,你可以消除它,或者解决它。我的测试涉及大量的点击和加载不同的页面,这可能就是问题所在。我设置了活动等待,所以等待页面上的某个元素出现,但这些等待在大约4秒后超时。我听说静态等待是一种不好的编码实践?静态等待不被认为是最佳实践,但有时您会做您必须做的事情。另外,您的4秒超时时间非常低。通常我会看到10秒、30秒或60秒左右的超时,无论是隐式的还是显式的。是的,我增加了动态超时,并会尝试一下,如果这不起作用,我会查看静态等待。感谢您的帮助: