问题描述
我的Selenium无头测试是从Jenkins服务器触发的,并在EC2-Ubuntu中运行。我想在Chrome上实时查看测试,因此我在Jenkins上安装了Xvfb插件。
在EC2上,我安装了Xvfb。当我开始执行构建时,我的测试开始执行,并且我看到以下日志:
Xvfb /usr/bin/Xvfb :1 -fbdir /var/lib/jenkins/xvfb
27-..fbdir13700092919317283985
Parsing POMs Established TCP socket on 30810
@H_404_13@我看到测试运行成功。
现在我通过Mac终端通过SSH到EC2
ssh -L 5901:localhost:5901 [email protected]
@H_404_13@然后我执行:
qa_user@jenkins-it:~$ export disPLAY=: 30810` (Port number from Jenkins logs above) qa_user@jenkins-it:~$ vncserver "$disPLAY" -geometry 1280x1024 New 'X' desktop is jenkins-it: 30810 Starting applications specified in /home/qa_user/.vnc/xstartup Log file is /home/qa_user/.vnc/jenkins-it: 30810.log qa_user@jenkins-it:~$ x11vnc --listen 0.0.0.0 -rfbport 5901 -display : 30810
@H_404_13@这将启动XVFB,我看到:
现在,当我从Mac连接到VNCviewer的localhost:5901时,我将被带到Ubuntu桌面。
但是即使测试正在运行,我也看不到chrome打开,并且在Jenkins上看到了测试日志。
我在这里想念什么? 我尝试了许多Xvfb设置说明,并且自一个月以来一直在尝试解决此问题。这是我问的几个问题:
How to view live headless Selenium tests on EC2-Ubuntu using vncserver and xvfb
很长的路要走,直到现在Stackoverflow是我的最后选择。请帮忙。
解决方法
我自己找到了解决方案。对于遇到相同问题的任何人:
我做错了是我在代码中使用
driver = new ChromeDriver(options);
而不是driver = new RemoteWebDriver(new URL("http://my.aws.ip:4444/wd/hub"),options);
进行此更改后,我在ec2中下载了selenium-server-standalone.jar。
然后,在开始测试之前,我对ec2进行ssh -X [email protected]并执行:
Xvfb :99 -ac -screen 0 1280x1024x24 & export DISPLAY=:99 java -jar /home/qa_user/Selenium/selenium-server-standalone.jar
现在,执行测试,同时打开一个新终端并执行以下操作:
ssh -L 5900:localhost:5900 [email protected]
设置好屏幕后,我就会这样做:
x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :99 -auth /var/run/lightdm/root/:0 -rfbport 5900
接下来,打开VNC查看器,连接到localhost:5900,您将看到Chrome执行。
稍后,如果需要,您可以将所有这些内容移至Jenkins预制执行外壳程序中:)
有关我最新答案的更多详细信息: XVFB on Jenkins connecting to wrong display. Display shows black screen