Firefox Xvfb插件在Jenkins上并发运行多个作业实例

Firefox Xvfb插件在Jenkins上并发运行多个作业实例,firefox,jenkins,selenium-webdriver,ui-automation,xvfb,Firefox,Jenkins,Selenium Webdriver,Ui Automation,Xvfb,我在Jenkins有一份工作,负责运行用Selenium编写的UI测试。作业可以同时运行其多个实例。我在尝试使用Xvfb(或其他)时遇到了一个问题 使用Xvfb插件 配置如下所示。 插件将相同的显示端口分配给2个并发作业实例,然后其中一个失败 从Xvfb日志(注意,在这两种情况下,displayfd为2,screen为0): 上述两个作业实例之一失败。失败消息如下: 02:11:51 _XSERVTransSocketINETCreateListener: ...SocketCreateList

我在Jenkins有一份工作,负责运行用Selenium编写的UI测试。作业可以同时运行其多个实例。我在尝试使用Xvfb(或其他)时遇到了一个问题

使用Xvfb插件

配置如下所示。 插件将相同的显示端口分配给2个并发作业实例,然后其中一个失败

从Xvfb日志(注意,在这两种情况下,displayfd为2,screen为0):

上述两个作业实例之一失败。失败消息如下:

02:11:51 _XSERVTransSocketINETCreateListener: ...SocketCreateListener() failed
02:11:51 _XSERVTransMakeAllCOTSServerListeners: server already running
如何修复此错误,使并发实例运行时不会出现任何问题

此外,我想知道Xvfb插件如何将显示与正在运行的浏览器实例(本例中为Firefox)关联起来。它是否在内部执行导出显示=:xx,其中xx=插件计算的显示端口

命令行(不使用Xvfb插件)

我尝试的第二种方法是不使用插件,而是直接使用CLI运行Xvfb。我使用Jenkins env变量BUILD_NUMBER来确保与作业实例的唯一显示关联

export DISPLAY=:${BUILD_NUMBER}
Xvfb :${BUILD_NUMBER} -screen 0 1024x768x24 &
Xvfb在两个作业实例中都可以正常启动,但测试失败

Failed to connect to binary FirefoxBinary(/usr/local/bin/firefox) on port 7055; process output follows: 
Error: cannot open display: 0:0
似乎测试仍在尝试使用显示0:0


非常感谢您为解决此问题提供的任何帮助。

您是否尝试过在Jenkins中使用Display环境变量,与Xvbf最初使用的相同?在我的例子中,它起作用了,我按照本文中描述的说明进行操作

对此并不确定,但是在命令行实现中,
-screen
参数后面不也需要一个唯一的数字吗?例如:
Xvfb:${BUILD\u NUMBER}-屏幕${BUILD\u NUMBER}1024x768x24&
。不过我对xvfb还是个新手,所以我不确定。
Failed to connect to binary FirefoxBinary(/usr/local/bin/firefox) on port 7055; process output follows: 
Error: cannot open display: 0:0