22

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

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

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

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

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

4

4 回答 4

21

您可以很容易地在本地运行 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。

于 2013-05-05T10:09:45.850 回答
10

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

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

  • 在同一台机器上运行多个浏览器通常会影响性能,因此请注意不要使用过多的浏览器实例,否则实际上可能会增加测试时间!
于 2016-06-17T17:30:18.017 回答
6

您正在寻找的是Selenium Grid 2

网格允许您:

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

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

于 2013-04-15T08:35:30.953 回答