EC2上的XVFB和Selenium-无法在VNC Viewer上查看Chrome UI

问题描述

我的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,我看到:

enter image description here

现在,当我从Mac连接到VNCviewer的localhost:5901时,我将被带到Ubuntu桌面。

enter image description here

但是即使测试正在运行,我也看不到chrome打开,并且在Jenkins上看到了测试日志。

我还可以通过VncViewer使用Chrome。

enter image description here

在这里想念什么? 我尝试了许多Xvfb设置说明,并且自一个月以来一直在尝试解决此问题。这是我问的几个问题:

https://askubuntu.com/questions/1262925/run-selenium-tests-on-ec2-with-gui?noredirect=1#comment2139716_1262925

How to view live headless Selenium tests on EC2-Ubuntu using vncserver and xvfb

https://sqa.stackexchange.com/questions/45376/looking-for-a-solution-to-run-selenium-tests-on-ec2-with-gui/45380#45380

很长的路要走,直到现在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