Можно ли запустить веб-драйвер selenium (Firefox) без графического интерфейса?

Мы рассматриваем возможность обновления нашего производственного сервера с Ubuntu- desktop 10.04 до Ubuntu- сервера 12.04.

У нас есть различные службы, работающие на нашей текущей настольной ОС, такой как Selenium Web Driver. Мой вопрос в том, можно ли запустить Selenium Web Driver из системы на основе cli?

Моя непосредственная мысль заключается в том, что она не может, потому что она зависит от Firefox, но я бы хотел, чтобы кто-то доказал, что я ошибаюсь!

Ответ 1

То, что вы ищете, это .

Да, можно без проблем запустить Selenium на Firefox. Ниже приведена post.

Ниже приведены краткие шаги по настройке Xvfb

#install Xvfb
sudo apt-get install xvfb

#set display number to :99
Xvfb :99 -ac &
export DISPLAY=:99    

#you are now having an X display by Xvfb

Ответ 2

Мне легко удалось скрыть окно браузера.

Просто установить PhantomJS. Затем измените эту строку:

driver = webdriver.Firefox()

в

driver = webdriver.PhantomJS()

Остальную часть кода не нужно менять, и браузер не откроется. Для целей отладки используйте driver.save_screenshot('screen.png') на разных этапах вашего кода или просто продолжайте использовать веб-редактор Firefox в разработке.

Ответ 3

Если вам нужна поддержка браузера без гарнитуры, тогда вы можете принять другой подход.

https://github.com/detro/ghostdriver

Это было объявлено во время Селенской конференции, и оно все еще находится в разработке. Он использует PhantomJS в качестве браузера и намного лучше, чем HTMLUnitDriver, пока нет скриншотов, но поскольку он все еще находится в активной разработке.

Ответ 4

Да. Вы можете использовать HTMLUnitDriver вместо FirefoxDriver при запуске webdriver. Это безболезненная настройка браузера. Подробности можно найти здесь.

Ответ 5

Необязательно использовать pyvirtualdisplay следующим образом:

from pyvirtualdisplay import Display

display = Display(visible=0, size=[800, 600])
display.start()

#do selenium job here

display.close()

Более короткая версия:

with Display() as display:
    # selenium job here

Это, как правило, инкапсуляция python из xvfb и более удобная.

Кстати, хотя PhantomJS является браузером без заголовка, и окно не будет открыто, если вы его используете, кажется, что для PhantomJS все еще нужна среда gui.

Я получил код ошибки -6, когда вместо Firefox() вместо Firefox() я использую PhantomJS() в режиме безголовы (консоль с подключенной шлейфом). Однако все в порядке в среде рабочего стола.

Ответ 7

Имейте в виду, что веб-клиент HtmlUnitDriver является однопоточным, а Ghostdriver - только 40% функций, которые должны быть WebDriver.

Тем не менее, Ghostdriver работает правильно для тестов, и у меня возникают проблемы с подключением его к концентратору WebDriver.

Ответ 8

UPDATE: вам больше не понадобится XVFB для запуска Firefox. Firefox v55 на Linux и Firefox v56 на Windows/Mac теперь поддерживает безгласное выполнение.

Я добавил здесь некоторую практическую документацию:

https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java