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



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



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



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

1077   9  

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

    Ничего не найдено.