2013-04-14 163 views
16

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

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

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

从我的角度来看,这没有什么区别,如果测试在本地运行或在詹金斯的问题是一样的。我们需要以某种方式配置ChromeDriver。问题在于如何。

任何人都有一些想法或指针在哪里看,什么文件参与完成这项工作?

+0

可能重复(http://stackoverflow.com/questions/11049505/python-selenium-multiple-test-cases) –

回答

5

你在找什么是Selenium Grid 2

网格,您可以:

  • 规模由几台机器分配测试(并行执行)
  • 管理多个环境,从一个中心点,因此很容易对浏览器的一个巨大的组合运行测试/ OS。
  • 通过允许您实施自定义挂钩来利用虚拟基础架构来最小化网格的维护时间。
+2

是的,但电网找我像云计算解。我实际上想在一台机器上运行多个测试。因此,我不想购买新的硬件,而只想在单个节点上运行并行测试。 Grid对此仍然是正确的吗? –

+1

据我从https://code.google.com/p/selenium/wiki/ScalingWebDriver明白我想要的是根本不可能的。这就是为什么人们扩展到网格并且一次只能运行一台机器的测试。 –

+1

那么你想要什么可以实现与网格。您可以在同一台机器上安装集线器和节点。默认情况下,每个节点都能够处理5个FF,5个Chrome浏览器和1个IE浏览器实例。 – Amey

2

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

+0

我怀疑它实际上是可能的。例如,那些浏览器实例是否共享同一个会话?例如,如果您在一个浏览器中进行身份验证,则所有其他浏览器都将被登录(无论您使用的是JSession还是PHPSession)。防止这种情况的唯一方法可能是使用隐身模式(隐私浏览)。不过,我不确定Selenium会帮助我预防这种效应。 –

+1

你可以用“配置文件”,并设定您的浏览器清理饼干和everyhing,当它被关闭。我认为这可能是你的解决方案 – buddy

14

你可以很容易地在本地运行多个实例的chromedriver,只是实例化多个驱动程序对象,chromedriver将保持配置文件分离并找到一个端口来运行它本身。

下面的链接,一个例子可以运行用TestNG和Maven多重考验:

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

只是克隆上述项目并运行以下命令行:

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

它利用了TestNG管理线程池的能力,并在指定的情况下打开多个实例。你可以用jUnit做同样的事情,但是你需要编写一个自定义的测试运行器来将测试分解成单独的线程。

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

+0

这个工作使用你的例子。是否可以用Firefox做同样的事情,或者只有支持多线程的Chrome驱动程序? – nettie

+0

所有司机使用Ghostdriver当作为PhantomJS版本<2.0似乎并不完全线程安全支持多线程(如果你看一下链接项目README.md它会告诉你所有的浏览器选项),但情况因人而异。我没有真正看过2.x版本,因为现在Chrome的速度非常快,PhantomJS并不是真的值得。 – Ardesco

5

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

对于NUnit的用户,NUnit现在3.2.1具有“TestContext.Current.WorkerId”属性,让您隔离每个NUnit的工人一个的webdriver实例。

  • 在同一台机器上运行多个浏览器往往会妨碍性能,所以要小心不要使用太多的浏览器实例,否则实际上可能会增加测试时间!
的[蟒蛇硒多个测试用例]
+0

Neat ...有关如何使用MSTest做到这一点的任何想法? – BlackjacketMack

+0

@BlackjacketMack - 对不起,我不使用MSTest的,因为它有比较NUnit的功能非常有限(或任何其他的框架真的)。如果你还没有试过NUnit,我强烈推荐它。 – Null511

相关问题