Xvfb插件在Jenkins上同时运行多个作业实例

时间:2017-03-30 15:29:10

标签: firefox jenkins selenium-webdriver ui-automation xvfb

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

使用Xvfb插件

配置如下。 enter image description here 该插件将相同的显示端口分配给2个并发作业实例,然后一个失败。

从Xvfb日志(注意displayfd为2,两种情况下屏幕均为0):

Xvfb starting$ /usr/bin/Xvfb -displayfd 2 -screen 0 1024x758x16 -fbdir /srv/jenkins/xvfb-86-2156913754362856583.fbdir
Xvfb starting$ /usr/bin/Xvfb -displayfd 2 -screen 0 1024x758x16 -fbdir /srv/jenkins/xvfb-87-5845090375656014678.fbdir

以上2个作业实例中的一个失败。失败的信息是:

02:11:51 _XSERVTransSocketINETCreateListener: ...SocketCreateListener() failed
02:11:51 _XSERVTransMakeAllCOTSServerListeners: server already running

如何解决此错误,以便并发实例运行时没有任何问题?

此外,我想知道Xvfb插件如何将显示关联到正在运行的浏览器实例(在本例中为Firefox)。它是否在内部export DISPLAY=: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。

非常感谢任何帮助解决此问题。

1 个答案:

答案 0 :(得分:1)

您是否曾尝试在Jenkins中使用Display环境变量,同样的Xvbf已经开始使用?在我的情况下,它工作,我按照本文headless execution selenium tests in Jenkins

中描述的说明进行操作