用Jenkins运行无头firefox Xvfb来运行selenium测试

kyb*_*org 5 firefox selenium jenkins selenide

Error: no display specified在FreeBSD服务器的Jenkins中运行play框架测试时遇到错误.所以每次我都面临超时

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox

詹金斯有:

1)安装Xvfb插件

2)安装了Play Framework

使用硒化物库和硒化物模块为游戏框架编写测试.

在作业配置中配置并启用Xvfb.

作业控制台输出是:

Checking out Revision 3f485bd2e3dbcfa058fc19f89ab18020e36707d8 (origin/trunk)
...
Xvfb starting$ /usr/local/bin//Xvfb :1 -screen 0  -fbdir /usr/local/jenkins/xvfb-9-786185694297443042.fbdir
...
Command detected: clean
Command detected: deps --sync
Command detected: precompile
Command detected: auto-test
[YalsTests] $ /srv/java/play/play clean
...
~ using java version "1.8.0_72"
[YalsTests] $ /srv/java/play/play auto-test
~ 14 tests to run:
~
~ selenium/front/CorrectInput...         org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
Error: no display specified

    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:113)
    at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:271)
Run Code Online (Sandbox Code Playgroud)

工作配置:

[X] Start Xvfb before the build, and shut it down after.
Xvfb specific display name  1
Xvfb display name offset 0

Invoke Play Framework       
Command set     Play 1.x 
Goals   
    Clean project [clean]
    Custom parameter
         Custom command deps --sync
    Precompile all Java sources and templates [precompile]
    Automatically run all application tests [auto-test]
Run Code Online (Sandbox Code Playgroud)

lil*_*nux 1

Selenium 任务需要知道它应连接到的 DISPLAY。您可以将其设置为环境变量(如果您在 .profile 中执行此操作,请不要忘记导出它)

export DISPLAY=:10
Run Code Online (Sandbox Code Playgroud)

这是针对 bash 的,其他 shell 可能需要两步过程:

DISPLAY=:10
export DISPLAY
Run Code Online (Sandbox Code Playgroud)

您还可以在命令行中的命令之前指定变量:

DISPLAY=:10 java -jar mySelenium.jar
Run Code Online (Sandbox Code Playgroud)