【问题标题】:XVFB and Selenium on EC2 - Unable to view Chrome UI on VNC ViewerEC2 上的 XVFB 和 Selenium - 无法在 VNC 查看器上查看 Chrome UI
【发布时间】:2023-03-24 03:13:01
【问题描述】:

我的 Selenium 无头测试从 Jenkins 服务器触发并在 EC2-Ubuntu 中运行。我想在 Chrome 上实时查看测试,所以我在 Jenkins 上安装了 Xvfb 插件。

在 EC2 上,我安装了 Xvfb。当我开始执行构建时,我的测试开始执行,我看到以下日志:

Xvfb /usr/bin/Xvfb :1 -fbdir /var/lib/jenkins/xvfb27-..fbdir13700092919317283985

Parsing POMs
Established TCP socket on 30810

我看到测试运行成功。

现在我通过 SSH 从 Mac 终端到 EC2

ssh -L 5901:localhost:5901 qa_user@10.113.x.xxx

然后我执行:

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

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

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

我还可以通过 VncViewer 使用 Chrome。

我在这里缺少什么? 我尝试了许多 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 是我最后的选择。请帮忙。

【问题讨论】:

  • 您在谈论 Selenium“无头”。您是否使用无头标志运行 ChromeDriver?如果 Chrome 在无头模式下运行,您将永远看不到 UI。
  • 是的。我已将 chrome 选项设置为无头。如果我不这样做,我相信它会抛出“找不到 Chome 二进制”错误。或者至少在安装 Xvfb 之前做到了。您是否建议删除无头标志并在 xvfb 中尝试?
  • 是的。您必须删除无头标志。 Chrome 无头标志实际上使浏览器不会以图形方式生成。如果您有其他错误,请在删除标记后编辑问题,或者更好地提出另一个问题,我们会检查出来。
  • 如果我删除 options.addArguments("--headless");从我的代码。 org.openqa.selenium.WebDriverException:未知错误:Chrome 启动失败:异常退出(未知错误:DevToolsActivePort 文件不存在)(从 chrome 位置 /usr/bin/google-chrome 启动的进程不再运行,所以ChromeDriver 假设 Chrome 已崩溃。)构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:17:03'
  • Chrome 是否从您拥有的 VNC 会话中打开?就像双击快捷方式,看看它是否有效

标签: selenium ubuntu jenkins amazon-ec2 xvfb


【解决方案1】:

我自己找到了解决方案。对于遇到相同问题的任何人:

我做错的是我在代码中使用了driver = new ChromeDriver(options); 而不是driver = new RemoteWebDriver(new URL("http://my.aws.ip:4444/wd/hub"), options);

进行此更改后,我将 selenium-server-standalone.jar 下载到 EC2 中。

然后,在开始测试之前,我对 EC2 执行了 ssh -X qa_user@my.aws.ip 并执行:

Xvfb :99 -ac -screen 0 1280x1024x24 &
export DISPLAY=:99
java -jar /home/qa_user/Selenium/selenium-server-standalone.jar

现在,执行测试,同时我打开了一个新终端并做了:

ssh -L 5900:localhost:5900 qa_user@my.aws.ip

设置好屏幕后,我就这样做了:

x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :99 -auth /var/run/lightdm/root/:0  -rfbport 5900

接下来,打开 VNC 查看器,连接到 localhost:5900,您将看到 Chrome 执行。

如果需要,稍后您可以将所有这些移至 Jenkins 预构建执行 shell :)

有关我最新答案的更多详细信息: XVFB on Jenkins connecting to wrong display. Display shows black screen

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多