Можно ли запустить веб-драйвер selenium (Firefox)без графического интерфейса?
мы рассматриваем возможность обновления нашего производственного сервера с Ubuntu - desktop 10.04 в Ubuntu -сервер 12.04.
У нас есть различные службы, работающие на нашей текущей настольной ОС, такие как Selenium Web Driver. Мой вопрос заключается в том, можно ли запустить веб-драйвер Selenium из системы на основе cli?
моя непосредственная мысль заключается в том, что он не может, потому что он полагается на Firefox, но я хотел бы, чтобы кто-то доказал, что я ошибаюсь!
9 ответов:
то, что вы ищете-это headless-browser.
да, можно запустить 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
мне легко удалось скрыть окно браузера.
просто установить PhantomJS. Затем измените эту строку:
driver = webdriver.Firefox()to:
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()на безголовом режиме (шпатлевка-подключена приставка). Однако все в порядке в среде рабочего стола.
обновление: вам больше не нужно 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 webclient является однопоточным и Ghostdriver только на 40% функциональных возможностей, чтобы быть WebDriver.
тем не менее, Ghostdriver работает правильно для тестов, и у меня есть проблемы с подключением его к концентратору WebDriver.
Да, вы можете запускать тестовые сценарии без браузера, но вы должны работать с ними в автономном режиме.
Comments