Как запускать сеансы селенового сервера на разных экранах xvfb?

Моя проблема заключается в том, как получить изолированные видеопотоки из экземпляров браузера SeleniumServer. Позвольте мне объяснить.

У меня есть концентратор Selenium Server, работающий на сервере Ubuntu Server, и Selenium Server node, работающий на том же сервере, поэтому я использую режим безглавых Selenium с помощью xvfb. Я запускаю узлы следующим образом: DISPLAY=:99 java -jar selenium-server-standalone.jar -role node -hub http://localhost:4444/grid/register

Затем я хочу получить видеопотоки тестов, запущенных там, поэтому я установил x11server, подключенный к виртуальному дисплею xvfb, и после этого я могу подключить этот удаленный сервер с помощью VNC, и я вижу свою обработку тестов. Проблема в том, что все экземпляры браузера внутри node, отображаемые на одном виртуальном дисплее (# 99), и когда мне нужно одновременно запускать несколько тестов, я вижу, что несколько экземпляров браузера накладываются один за другим. Но я хочу записать потоки видео с ошибками, поэтому я не могу этого сделать. Поэтому мне нужно иметь возможность подключаться к каждому обозревателю виртуального экрана.

Я думаю, что я могу решить эту проблему, настроив сервер xvfb каким-то образом, чтобы заставить его создать изолированный виртуальный экран или экран (xvfb имеет многоэкранную поддержку, не так ли?) для каждого клиента (экземпляр браузера в моем случае). Но я пытался это сделать, и я не получил результата. Также я могу использовать другой виртуальный дисплей (а не xvfb), если это необходимо для решения этой проблемы.

Пожалуйста, помогите мне получить изолированные видеопотоки из каждого экземпляра браузера:) Большое спасибо и извините за мой английский.

Ответ 1

С центром селена вы можете добавлять браузеры отдельно в свои собственные сеансы Xvfb

java -jar selenium-server-standalone-2.33.0.jar -role hub& 

затем подключите каждый браузер отдельно в своем собственном сеансе Xvfb, DISPLAY и порту

export DISPLAY=:11
Xvfb :11 -screen 0 1024x768x16 &

java -jar selenium-server-standalone-2.33.0.jar \
   -role node \
   -port 4441
   -hub http://localhost:4444/grid/register \
   -browser "browserName=firefox,version=19,maxInstances=5"&

Ответ 2

Для такого использования вы обычно можете использовать команду xvfb-run (которая может автоматически выбирать дисплей, но его можно настроить)

Затем вы можете создать запуск firefox script, который выполнил бы xvfb-run firefox, который вы могли бы использовать как команду запуска selenium firefox (указанную как FirefoxBinary)