如何在多个服务器上并行运行IE中的TestNG / Selenium测试套件



我有一个Selenium测试套件,使用我用TestNG运行的IEDriver。目标是使用此测试套件进行回归。我想针对每个生产服务器运行此测试套件。目前,我可以将其指向任何服务器并运行测试。但是,问题是我一次只能运行一个。连续运行它们需要很长时间。将一个Windows服务器指向每个Linux生产服务器不是一个可行或可扩展的选项。我想要某种方式在单独的线程上运行它们,如果可能的话,从一个Windows服务器运行它们。

我一直在研究Selenium Grid/Remote Driver,但我不确定这是否是正确的解决方案,或者如何实现我的目标。从我读到的内容来看,我想我希望每个"节点"都是一个不同的生产服务器,但我对这项技术是全新的。

环顾了堆栈溢出,但我没有找到任何完全回答我的问题的东西。如果有人有此类问题或这些技术的经验,我将不胜感激。

我确实使用Selenium Grid实现了这样的事情。

您需要做的是:

  1. 在此处下载硒服务器
  2. 在一台服务器上启动一个Selenium集线器,如下所示:

    Java -jar Selenium-server-standalone-2.44.0.jar -role hub

  3. 在每个测试服务器上启动Selenium节点,如下所示:

    Java -jar Selenium-server-standalone-2.44.0.jar -role node -hub http://localhost:4444/grid/register

  4. 使用 Selenium 集线器创建驱动程序,如下所示:

    CommandExecutor executor = new SeleneseCommandExecutor(new URL("http://localhost:4444/"), new URL("http://www.google.com/"), capabilities);

    WebDriver driver = new RemoteWebDriver(executor, capabilities);

更多信息在这里和这里

在Selenium Grid中,你有:

L:执行Java代码的机器(本地机器或Jenkins节点)。

N:一台或多台托管运行测试的浏览器实例的计算机。

H :负责引导LN之间的流量的机器。

当您有太多的测试无法在一台机器上运行整个套件时,这是一个非常有用的选择。如果你有自己的虚拟机网格,我建议使用SeleniumGridExtras——它可以处理IE Webdriver的一些怪异之处。如果没有,您可以使用BrowserStack或SauceLabs快速设置。

即使没有 Selenium Grid,您也可以使用并行执行在本地运行多个测试线程并增加线程计数。(threadPoolSize = 3特定@Test批注,或parallel="methods" thread-count="28"套件 xml 文件中。

但是,无论如何,Selenium测试的每台机器执行时间都足够长,因此可以连续运行套件。在IE中,在给定计算机上一次运行多个测试通常被认为是不明智的。你可以链接 Jenkins 作业,让它们一个接一个地完成。

最新更新