Можно ли запустить веб-драйвер 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.
Да, вы можете запускать тестовые сценарии без браузера, но вы должны работать с ними в автономном режиме.