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

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

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

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

9 ответов


то, что вы ищете-это безголовый-браузер.

Да, это возможно, чтобы запустить Selenium в браузере Firefox headlessly. Вот это в должности вы можете следовать.

вот сводные шаги для настройки 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

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

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

driver = webdriver.Firefox()

в:

driver = webdriver.PhantomJS()

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


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

https://github.com/detro/ghostdriver

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


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


необязательно использовать 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, когда я использую PhantomJS() вместо Firefox() на безголовом режиме (шпатлевка-подключена приставка). Однако все в порядке в среде рабочего стола.


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

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

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


другой вариант-GhostDriver, который теперь официально поддерживается WebDriver:Ghostdriver фактического прироста производительности


помните, что HtmlUnitDriver вебклиент является однопоточным и Ghostdriver только на 40% от возможности быть с WebDriver.

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


Да, вы можете запускать тестовые сценарии без браузера, но вы должны работать с ними в автономном режиме.