同时运行多个Selenium测试

时间:2013-04-14 23:47:05

标签: testing selenium selenium-chromedriver

我想同时运行多个Selenium Tests(在Jenkins服务器上)。

它目前只运行一次测试,因为ChromeDriver似乎通过特殊端口进行通信。所以不知怎的,我想我必须通过Selenium将一些端口设置传递给ChromeDriver来启动多个测试。

不幸的是,Selenium网站对于该主题是空的: http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#parallelizing-your-test-runs

从我的观点来看,如果测试在本地运行或在Jenkins上运行没有区别,问题是相同的。我们需要以某种方式配置ChromeDriver。问题是如何。

任何人都有一些想法或指示在哪里查看以及完成这项工作涉及哪些文件?

4 个答案:

答案 0 :(得分:18)

您可以非常轻松地在本地运行多个chromedriver实例,只需实例化多个驱动程序对象,chromedriver将保持配置文件分离并找到一个可以自行运行的端口。

这是一个可以使用TestNG和Maven运行多个测试的示例的链接:

https://github.com/Ardesco/Selenium-Maven-Template

只需克隆上面的项目并在命令行中运行以下命令:

mvn verify -Pselenium-tests -Dbrowser=chrome -Dthreads=2

它利用了TestNG管理线程池的能力,并且如果指定的话将打开多个实例。您可以使用jUnit执行相同的操作,但是您需要编写一个自定义测试运行器来将测试发送到单个线程中。

如果您决定使用gradle,它可以处理使用TestNG和jUnit为您管理线程池,并且很多人更喜欢它来为maven。

答案 1 :(得分:8)

这是一个老问题,但对于仍在阅读的人来说,很有可能并行运行多个Selenium WebDriver实例而不使用使用Grid。我已经使用Chrome,FireFox和PhantomJs(最多5个)成功测试了这个。每个WebDriver实例都使用隔离的上下文,因此会话冲突不应成为问题。但请注意服务器端冲突,具体取决于您网站的要求!

对于NUnit用户,NUnit 3.2.1现在有一个'TestContext.Current.WorkerId'属性,允许您为每个NUnit工作者隔离一个WebDriver实例。

  • 在同一台计算机上运行多个浏览器通常会影响性能,因此请注意不要使用过多的浏览器实例,否则实际上可能会增加测试时间!

答案 2 :(得分:5)

您要找的是Selenium Grid 2

Grid允许您:

  • 通过在多台机器上分发测试(并行执行)进行扩展
  • 从中心点管理多个环境,可以轻松地针对大量浏览器/操作系统运行测试。
  • 允许您实现自定义挂钩以利用虚拟基础架构,从而最大限度地缩短网格的维护时间。

答案 3 :(得分:2)

我同意将网格与Maven并行化类结合使用,您可以在一台PC上运行多个实例。在为构建使用Ant时,Jenkins是可能的,然后您可以指定哪个测试可以并行运行。 虽然很容易设置它;)