为并行执行优化 Selenium 测试

Optimize Selenium tests for parallel execution

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

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

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

我的测试是在 Windows 环境中用 Java 编写的。我正在使用 phantomjs 1.9.8 和 Selenium 3.54

轶事:当我发现我的测试 运行 在我的机器上很好但在网格节点上不太好时,这通常是一个时间问题。我的工作站比我的虚拟机(网格节点)强大得多,所以简单的动画需要更长的时间来渲染。它到了我写了一个 .ClickViaJavaScript() 来代替 .Click() 的地步。在 js 单击后,我还投入了 500 毫秒的睡眠。

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

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