问题描述
我的Selenium无头测试是从Jenkins服务器触发的,并在EC2-Ubuntu中运行.我想在Chrome上实时查看测试,因此我在Jenkins上安装了Xvfb插件.
My Selenium headless tests are triggered from Jenkins server and run in EC2-Ubuntu. I want to view the test live on Chrome so I installed Xvfb plugin on Jenkins.
在EC2上,我安装了Xvfb.当我开始执行构建时,我的测试开始执行,并且我看到以下日志:
On EC2 I installed Xvfb. When I start executing the build, my test starts execution and I see below logs:
Xvfb /usr/bin/Xvfb :1 -fbdir /var/lib/jenkins/xvfb
27-..fbdir13700092919317283985
Parsing POMs
Established TCP socket on 30810
我看到测试运行成功.
现在我通过Mac终端通过SSH到EC2
Now I do SSH to EC2 from Mac terminal by
ssh -L 5901:localhost:5901 [email protected]
然后我执行:
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
这将启动XVFB,我看到:
This starts XVFB and I see:
现在,当我从Mac连接到VNCviewer的localhost:5901时,我将被带到Ubuntu桌面.
Now when I connect from Mac to localhost:5901 from VNCviewer, I am taken to Ubuntu desktop.
但是即使测试正在运行,我也看不到chrome打开,并且在Jenkins上看到了测试日志.
But I don't see chrome opening up even though the test is running and I see test logs on Jenkins.
我还可以通过VncViewer使用Chrome.
I am also able to use Chrome via VncViewer.
我在这里想念什么?我尝试了许多Xvfb设置说明,并且自一个月以来一直在尝试解决此问题.这是我问的几个问题:
What am I missing here?I tried many Xvfb set up instructions and has been trying to get this right since a month now. Here are few questions I asked:
很长一段路要走到现在,现在Stackoverflow是我的最后选择.请帮忙.
Long way till here and now Stackoverflow is my last resort. Please help.
推荐答案
我自己找到了解决方案.对于遇到相同问题的任何人:
I found the solution to this myself. For anyone who's having the same issue:
我做错了是我在代码中使用了driver = new ChromeDriver(options);
而不是driver = new RemoteWebDriver(new URL("http://my.aws.ip:4444/wd/hub"), options);
What I did wrong was I used driver = new ChromeDriver(options);
in my code instead of driver = new RemoteWebDriver(new URL("http://my.aws.ip:4444/wd/hub"), options);
进行此更改后,我在ec2中将selenium-server-standalone.jar下载到了.
After making this change, I downloaded selenium-server-standalone.jar to in EC2.
然后,在开始测试之前,我对ec2进行ssh -X [email protected]并执行:
Then, before starting the test, I did ssh -X [email protected] to EC2 and executed:
Xvfb :99 -ac -screen 0 1280x1024x24 &
export DISPLAY=:99
java -jar /home/qa_user/Selenium/selenium-server-standalone.jar
现在,执行测试,同时打开一个新终端并执行以下操作:
Now, execute the test, in parallel I opened a new terminal and did:
ssh -L 5900:localhost:5900 [email protected]
设置好屏幕后,我就会这样做:
Once the screen was set, I did:
x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :99 -auth /var/run/lightdm/root/:0 -rfbport 5900
接下来,打开VNC查看器,连接到localhost:5900,您将看到Chrome执行.
Next, open VNC viewer, connect to localhost:5900 and you'll see Chrome execution.
稍后,如果需要,您可以将所有这些移至Jenkins预先构建的执行外壳中:)
Later you can move all this to Jenkins pre-build execute shell if required :)
有关我最新答案的更多详细信息: Jenkins上的XVFB连接到错误的显示器.显示屏显示黑屏
More details on my latest answer :XVFB on Jenkins connecting to wrong display. Display shows black screen
这篇关于EC2上的XVFB和Selenium-无法在VNC Viewer上查看Chrome UI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!