我使用与IEDriver
一起运行的TestNG
的Selenium测试套件。目标是使用此测试套件进行回归。我想针对每个生产服务器运行此测试套件。目前我可以将其指向任何服务器并运行测试。但问题是我一次只能运行一个。连续运行它们需要太长时间。让一个Windows服务器指向每个Linux生产服务器是不可行或可扩展的选项。我想要一些方法在不同的线程上运行它们,如果可能的话,从一个Windows服务器运行。
我一直在研究Selenium Grid/Remote Driver
,但我不确定这是否是正确的解决方案或如何实现我的目标。从我读到的内容来看,我想我希望每个“节点”都是不同的生产服务器,但我对这项技术完全陌生。
我看了一下堆栈溢出,但我没有发现任何可以回答我的问题。如果有人遇到过这类问题或使用这些技术,我将非常感谢您的意见。
答案 0 :(得分:1)
我确实使用Selenium Grid实现了这个功能。
您需要做的是:
在一台服务器上启动Selenium hub,如下所示:
java -jar selenium-server-standalone-2.44.0.jar -role hub
在每个测试服务器上启动Selenium节点,如下所示:
java -jar selenium-server-standalone-2.44.0.jar -role node -hub http://localhost:4444/grid/register
使用Selenium hub创建驱动程序,如下所示:
CommandExecutor executor = new SeleneseCommandExecutor(new
URL("http://localhost:4444/"), new URL("http://www.google.com/"),
capabilities);
WebDriver driver = new RemoteWebDriver(executor,capabilities);
答案 1 :(得分:0)
在Selenium Grid中,你有:
L
:执行Java代码的机器(本地机器或Jenkins节点)。
N
:托管运行测试的浏览器实例的一台或多台计算机。
H
:负责指导L
和N
之间流量的计算机。
当您在一台计算机上运行整个套件的测试太多时,这是一个非常有用的选择。如果您有自己的VM网格,我建议使用SeleniumGridExtras - 它处理IE Webdriver的一些奇怪之处。如果不这样做,您可以使用BrowserStack或SauceLabs快速设置。
即使没有Selenium Grid,您也可以使用并行执行在本地运行多个测试线程并增加线程数。 (特定threadPoolSize = 3
注释上的@Test
或套件xml文件中的parallel="methods" thread-count="28"
。)
无论如何,Selenium测试的每机器执行时间足够高,因此将套件串联运行是有意义的。在IE中,在给定的机器上一次运行多个测试通常被认为是不明智的。您可以链接Jenkins作业,让它们在下一个之后完成。