Я использую Selenium RC для автоматизации некоторых операций с браузером, но я хочу, чтобы браузер был невидим. Это возможно? Как? Как насчет селеновой сетки? Могу ли я скрыть окно Selenium RC?
Можно ли скрыть браузер в Selenium RC?
Ответ 1
Есть несколько вариантов:
-
Вы можете использовать Selenium Grid, чтобы браузер был открыт на совершенно другой машине (или виртуальной машине), которую вы можете подключить через VNC или подключение к удаленному рабочему столу, если вы хотите увидеть браузер. Кроме того, еще один вариант: если вы запускаете процесс переднего плана Jenkins на этом удаленном сервере, он может выполнить ваш тестовый проект на рабочем столе.
-
Вы можете запустить Selenium "без головы" на Linux в XVFB. Я никогда не пробовал делать это и сомневаться, что это действительно стоит усилий. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
-
Вы можете обернуть Selenium RC в службе Windows. http://support.microsoft.com/kb/137890. За исключением того, что ограничения разрешений на более поздние версии окон, вероятно, не позволят Selenium получить доступ к рабочему столу, например Windows 2000, который позволяет нам делать.
-
Другой вариант - использовать что-то вроде WebDriver HTMLUnitDriver, которое не запускает "настоящий" браузер. http://code.google.com/p/webdriver/. Также есть опция PhantomJS, а также "безголовый Chrome", который вы можете использовать.
-
Конечно, есть возможность использовать такую услугу, как SauceLabs, где вы можете запустить ваши тесты в облаке. После завершения тестов вы можете посмотреть видеоролик о них.
Ответ 2
В Linux вы можете запустить WebDriver на виртуальном дисплее без головы, чтобы скрыть браузер. Это можно сделать с помощью Xvfb (X виртуального кадрового буфера).
Вы можете управлять Xvfb напрямую из кода Python, используя xvfbwrapper
: https://github.com/cgoldberg/xvfbwrapper
Код Python для запуска без заголовка будет выглядеть так:
from selenium import webdriver
from xvfbwrapper import Xvfb
display = Xvfb()
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')
print(driver.title)
driver.quit()
display.stop()
Установите зависимости на Debian/Ubuntu:
$ sudo apt-get install xvfb
$ pip install xvfbwrapper
Ответ 3
Мне легко удалось скрыть окно браузера.
Просто установить PhantomJS. Затем измените эту строку:
driver = webdriver.Firefox()
в
driver = webdriver.PhantomJS()
Остальную часть кода не нужно менять, и браузер не откроется. Для целей отладки используйте driver.save_screenshot('screen.png')
на разных этапах вашего кода.
Ответ 4
+1 для Selenium RC в качестве службы Windows.
Для того, чтобы тесты полностью скрывались, я думаю, что у вас мало решений, если вы находитесь в окнах.
Что бы я сделал, чтобы посвятить компьютер в вашей локальной сети, чтобы он был онлайн все время и работал на сервере RC селена. Таким образом, вы используете этот IP-адрес компьютера вместо localhost для запуска своих тестов. Например:
browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")
(учитывая, что ip компьютера, на котором запущен сервер).
После этой настройки вы запускаете свои тесты на своем компьютере, браузеры и окно RC-сервера находятся на другом компьютере, и вы вернетесь к своему, как только закончите.
Ответ 5
В Linux вы можете запустить тестовый браузер на виртуальном дисплее. Для создания виртуального X-сервера вам понадобится пакет xvfb
. В дистрибутивах на базе Debian просто запустите
sudo apt-get install xvfb
Есть хороший инструмент ephemeral-x.sh
, который будет удобно настраивать любую команду для запуска на виртуальном дисплее. Загрузить и сделать его выполнимым:
wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh
Затем вы можете просто использовать его для запуска сервера Selenium:
./ephemeral-x.sh java -jar selenium-standalone.jar
Все окна браузера, созданные Selenium, теперь будут использовать виртуальный дисплей и будут невидимы для вас.
Ответ 6
Если вы работаете в Windows, один параметр - выполнить тесты под другой учетной записью пользователя. Это означает, что браузер и java-сервер не будут отображаться в вашей собственной учетной записи.
Ответ 7
Вот как я запускаю свои тесты с maven на рабочем столе Linux (Ubuntu). Я устал, не имея возможности работать с веб-браузером firefox, всегда сфокусированным.
Я установил xvfb
xvfb-run -a mvn clean install
Это он
Ответ 8
Во многих случаях PhantomJS не будет полностью соответствовать вашим потребностям, я хотел бы остановиться на варианте безгласного хрома, упомянутом в ответе Дэйва Ханта.
chrome 57 только что запустил эту функцию. Вы можете использовать его, передав флаг --headless через ChromeDriver, для получения дополнительной информации см. Обсуждение в этом вопросе
Ответ 9
Существует связанный с PhantomJS проект под названием GhostDriver, который предназначен для запуска экземпляров PhantomJS в селеновой сетке с использованием протокола JSON для проводника webdriver. Вероятно, это то, что вы ищете, хотя сейчас этот вопрос составляет 4 года.
Ответ 10
В MacOSX я не смог скрыть окно браузера, но, по крайней мере, я понял, как переместить его на другой дисплей, чтобы он не нарушал мой рабочий процесс. Пока Firefox запускает тесты, просто нажмите его значок в док-станции, выберите "Параметры" и "Назначить на дисплей 2".
Ответ 11
curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand
Кстати, это функция, необходимая любому разработчику, работающему с e2e, который логически будет порождать браузеры. В среде разработки раздражает обращение к окну, которое постоянно появляется, и которое вы случайно можете использовать, чтобы выполнить тест.