XVFB и Selenium на EC2 - Невозможно просмотреть пользовательский интерфейс Chrome в VNC Viewer

Aug 20 2020

Мои безголовые тесты Selenium запускаются с сервера Jenkins и выполняются в EC2-Ubuntu. Я хочу просмотреть тест в прямом эфире в Chrome, поэтому я установил плагин Xvfb на Jenkins.

На EC2 я установил Xvfb. Когда я начинаю выполнять сборку, мой тест запускается, и я вижу следующие журналы:

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

Parsing POMs
Established TCP socket on 30810

и я вижу, что тест проходит успешно.

Теперь я использую SSH для EC2 с терминала Mac с помощью

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, и я вижу:

Теперь, когда я подключаюсь с Mac к localhost: 5901 из VNCviewer, я попадаю на рабочий стол Ubuntu.

Но я не вижу открытия chrome, хотя тест запущен, и я вижу журналы тестов на Jenkins.

Я также могу использовать Chrome через VncViewer.

Что мне здесь не хватает? Я перепробовал множество инструкций по настройке Xvfb и уже месяц пытаюсь исправить это. Вот несколько вопросов, которые я задал:

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

Как просмотреть живые тесты Selenium без головы на EC2-Ubuntu с помощью vncserver и xvfb

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

Долгий путь до сих пор и сейчас Stackoverflow - мое последнее средство. Пожалуйста помоги.

Ответы

1 Afsal Sep 21 2020 at 05:52

Я сам нашел решение. Для тех, у кого такая же проблема:

Что я сделал не так, я использовал driver = new ChromeDriver(options);в своем коде вместоdriver = new RemoteWebDriver(new URL("http://my.aws.ip:4444/wd/hub"), options);

После внесения этого изменения я загрузил selenium-server-standalone.jar в EC2.

Затем перед запуском теста я ввел ssh -X [email protected] в EC2 и выполнил:

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 на Jenkins подключается к неправильному дисплею. Дисплей показывает черный экран