Selenium 在多个浏览器中并行运行

Selenium 在多个浏览器中并行运行,selenium,jenkins,bdd,behat,mink,Selenium,Jenkins,Bdd,Behat,Mink,我们目前使用自动化BDD测试为我们的网站 当前的设置使用连接到并用于渲染的运行(这允许我们在出现任何错误时保存屏幕截图) 这对于测试站点(包括JavaScript)是否正常工作以及用户是否能够成功执行每个记录的任务非常有用 我希望扩大我们的测试设施,我想补充的一点是能够检查多个浏览器。这一点非常重要,因为我们偶尔会遇到一些可能破坏功能的怪癖 由于测试目前需要一个多小时才能运行(我们在Jenkins上为该站点提供了4个套件),因此我最好同时运行所有浏览器。如果我找不到同时执行的方法,那么我可能只会

我们目前使用自动化BDD测试为我们的网站

当前的设置使用连接到并用于渲染的运行(这允许我们在出现任何错误时保存屏幕截图)

这对于测试站点(包括JavaScript)是否正常工作以及用户是否能够成功执行每个记录的任务非常有用

我希望扩大我们的测试设施,我想补充的一点是能够检查多个浏览器。这一点非常重要,因为我们偶尔会遇到一些可能破坏功能的怪癖

由于测试目前需要一个多小时才能运行(我们在Jenkins上为该站点提供了4个套件),因此我最好同时运行所有浏览器。如果我找不到同时执行的方法,那么我可能只会设置多个Behat配置文件,并以串联方式运行每个配置文件

我一直在寻找的一个可能的解决方案是。这将允许我们同时跨多个浏览器和多个设备(包括移动设备)进行测试。问题是,我找不到一种方式来加入到这一行为中,以一种有意义的方式

我可以运行一个连接到Ghostlab的浏览器,这将导致在所有连接的浏览器上执行相同的操作,但是,如果由Selenium控制的浏览器以外的浏览器出现故障,我不知道我们将如何捕获该信息

TL;DR:我有没有办法在多个浏览器上并行运行BDD(首选Behat)测试,并从任何失败的浏览器中捕获信息?

这就是Jenkins设计的(或矩阵作业)的目的

您只需指定一次作业配置,但添加一个或多个每次都应更改的变量,从而构建一个组合矩阵(在您的情况下,该矩阵只有一个维度:浏览器)

Jenkins然后并行运行一个主构建和多个子构建-矩阵中的每个组合一个。然后,您可以清楚地看到每个组合的结果

这要求您的测试作业可以参数化,即您可以在运行时选择应运行哪个浏览器,而不是在单个作业中同时运行所有测试

Jenkins wiki对此功能的文档很少,但是关于如何设置它,还有一些很好的(和堆栈溢出问题)

矩阵作业将使用Jenkins中所有可用的“执行器”,尽可能并行运行构建。

在默认的Jenkins安装中,有两个执行器可用,但您可以更改这一点,或通过添加来扩展Jenkins。

我喜欢这个答案,并且我知道这个功能,但是由于E2E测试期间发生的数据库更改,我避免了它。由于这是一个我正在测试的网站,所以很难(尽管不是不可能)任意创建和销毁虚拟主机和数据库模式。此外,我仍然无法测试手机等。如果没有其他答案可以解决这些问题,我会将其标记为正确,但我希望有一个更简单的方法来做。隐马尔可夫模型。。。我想知道我是否可以使用多配置作业和虚拟机来完成它。我想说这是正确的答案,构建应该在容器或虚拟机中运行。