Мы рассматриваем возможность обновления нашего производственного сервера с Ubuntu- desktop 10.04 до Ubuntu- сервера 12.04.
У нас есть различные службы, работающие на нашей текущей настольной ОС, такой как Selenium Web Driver. Мой вопрос в том, можно ли запустить Selenium Web Driver из системы на основе cli?
Моя непосредственная мысль заключается в том, что она не может, потому что она зависит от Firefox, но я бы хотел, чтобы кто-то доказал, что я ошибаюсь!
То, что вы ищете, это 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()
в
driver = webdriver.PhantomJS()
Остальную часть кода не нужно менять, и браузер не откроется. Для целей отладки используйте driver.save_screenshot('screen.png')
на разных этапах вашего кода или просто продолжайте использовать веб-редактор Firefox в разработке.
Если вам нужна поддержка браузера без гарнитуры, тогда вы можете принять другой подход.
https://github.com/detro/ghostdriver
Это было объявлено во время Селенской конференции, и оно все еще находится в разработке. Он использует 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, когда вместо Firefox()
вместо Firefox()
я использую PhantomJS()
в режиме безголовы (консоль с подключенной шлейфом). Однако все в порядке в среде рабочего стола.
Другим вариантом является GhostDriver, который теперь официально поддерживается WebDriver: Фактический прирост производительности Ghostdriver
Имейте в виду, что веб-клиент HtmlUnitDriver является однопоточным, а Ghostdriver - только 40% функций, которые должны быть WebDriver.
Тем не менее, Ghostdriver работает правильно для тестов, и у меня возникают проблемы с подключением его к концентратору WebDriver.
UPDATE: вам больше не понадобится XVFB для запуска Firefox. Firefox v55 на Linux и Firefox v56 на Windows/Mac теперь поддерживает безгласное выполнение.
Я добавил здесь некоторую практическую документацию:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java