目前,我在Selenium Grid上设置了五个phantomjs实例,所有这些实例都在不同的节点上。我试图一次运行5个并行测试,但其中一些测试将失败。每次,这是一个不同的测试,将在不同的行上失败。
我还等待和断言等待元素出现,但每次测试用例仍然在不同的位置失败。然而,当我逐个运行测试时,所有测试都会在100%的时间内完成。
有什么方法可以优化我的并行执行测试?
我的测试是在Windows环境下用Java编写的。我正在使用phantomjs 1.9.8和Selenium 3.54
答案 0 :(得分:1)
轶事:当我发现我的测试在我的机器上运行正常但在网格节点上运行不太好时,通常是一个计时问题。我的工作站比我的虚拟机(网格节点)更强大,因此简单的动画需要更长的渲染时间。它到了我写一个.ClickViaJavaScript()而不是.Click()的地步。 js点击后我也睡了500毫秒。
// Click element via JavaScript
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click()", element);
// Wait a moment
System.Threading.Thread.Sleep(500);
并行并不需要重写任何代码,只要您不在运行时更改全局变量并且每个测试都是原子的。