Testing 同时运行多个Selenium测试

Testing 同时运行多个Selenium测试,testing,selenium,selenium-chromedriver,Testing,Selenium,Selenium Chromedriver,我想同时运行多个Selenium测试(在Jenkins服务器上) 它目前一次只运行一个测试,因为ChromeDriver似乎通过一个特殊的端口进行通信。因此,我想我必须通过Selenium向ChromeDriver传递一些端口设置,以启动多个测试 遗憾的是,Selenium网站对于该主题是空的: 从我的观点来看,如果测试在本地运行或在Jenkins上运行,则没有区别,问题是相同的。我们需要以某种方式配置ChromeDriver。问题是怎么做 任何人都有一些想法或建议,可以在哪里查看,需要哪些文

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

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

遗憾的是,Selenium网站对于该主题是空的:

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


任何人都有一些想法或建议,可以在哪里查看,需要哪些文件才能完成这项工作?

您需要的是

网格允许您:

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

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

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

下面是一个链接,指向可以使用TestNG和Maven运行多个测试的示例:

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

mvn verify -Pselenium-tests -Dbrowser=chrome -Dthreads=2
它利用了TestNG管理线程池的能力,并将在指定的情况下打开多个实例。您可以使用jUnit做同样的事情,但是您需要编写一个定制的测试运行程序来将测试启动到各个线程中


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

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

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

  • 在同一台机器上运行多个浏览器通常会影响性能,因此请注意不要使用太多的浏览器实例,否则实际上可能会增加测试时间
是的,但网格对我来说就像一个云计算解决方案。我实际上想在一台机器上运行多个测试。因此,我宁愿在单个节点上运行并行测试,而不是购买新的硬件。网格仍然是正确的吗?据我所知,我想要的是根本不可能的。这就是为什么人们扩展到一个网格,并且一次只对每台机器运行一个测试的原因。您可以在同一台计算机上设置集线器和节点。默认情况下,每个节点都能够处理5个FF、5个Chrome和1个IE浏览器实例。这对于所要求的内容来说是一个巨大的过度消耗。阿德斯科的答案应该是公认的,我怀疑这在实际中是否可行。例如,这些浏览器实例不共享同一个会话吗?例如,如果您在一个浏览器中进行身份验证,则所有其他浏览器都将登录(无论您使用的是JSession还是PHPSession)。防止这种情况发生的唯一方法可能是使用匿名模式(私人浏览)。但是我不确定Selenium在什么意义上能帮助我防止类似的影响。你可以使用“配置文件”并将浏览器设置为在关闭时清除cookies和所有内容。我认为这可能是你的解决方案。使用你的例子,这可能是重复的。Firefox是否可以做同样的事情,或者只是Chrome驱动程序支持多线程?所有驱动程序都支持多线程(如果您查看链接的projects README.md,它将显示所有浏览器选项),但是当使用Ghostdriver作为PhantomJS版本<2.0时,YMMV似乎并不是完全线程安全的。我没有真正研究过2.x版本,因为chrome最近发展如此之快,PhantomJS真的不值得我这么做。答案是否只适用于Java,还是可以用于其他语言,如c?只要你保持实例的独立性,它也可以用于c?很好…你知道如何使用MSTest做到这一点吗?@BlackjacketMack-很抱歉,我不使用MSTest,因为与NUnit(或任何其他框架)相比,它的功能非常有限。如果你没有尝试过NUnit,我强烈推荐。