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