Вопрос

Я использую Selenium RC для автоматизации некоторых операций браузера, но хочу, чтобы браузер был невидимым.Это возможно?Как?А как насчет Selenium Grid?Могу ли я также скрыть окно Selenium RC?

Это было полезно?

Решение

Есть несколько вариантов:

  • Вы можете использовать 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 .За исключением того, что ограничения разрешений в более поздних версиях Windows, вероятно, не позволят Selenium получить доступ к рабочему столу, как это позволяла нам Windows 2000.

  • Другой вариант — использовать что-то вроде WebDriver HTMLUnitDriver, который не запускает «настоящий» браузер. http://code.google.com/p/webdriver/ .Также есть опция PhantomJS, а также «безголовый Chrome», который вы можете использовать.

  • Конечно, есть также возможность использовать такой сервис, как SauceLabs, где вы можете запускать свои тесты в облаке.После завершения тестов вы можете посмотреть видео их выполнения.

Другие советы

В 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

Мне легко удалось скрыть окно браузера.

Только установить PhantomJS.Затем измените эту строку:

driver = webdriver.Firefox()

к:

driver = webdriver.PhantomJS()

Оставшуюся часть кода менять не нужно, и браузер не откроется.В целях отладки используйте driver.save_screenshot('screen.png') на разных этапах вашего кода.

+1 для Selenium RC в качестве службы Windows.

Поскольку тесты выполняются полностью скрытно, я думаю, что у вас мало решений, если вы работаете в Windows.

Что бы я сделал, чтобы компьютер в вашей локальной сети был постоянно подключен к сети и работал сервер selenium RC. Таким образом, вы используете IP этого компьютера вместо localhost для запуска ваших тестов. Например:

browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(учитывая, что это ip компьютера, на котором работает сервер).

Имея эту настройку, вы запускаете свои тесты на своем компьютере, браузеры и окно сервера RC находятся на другом компьютере, и когда вы закончите, вернитесь к своему.

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

Если вы работаете в Windows, вы можете запустить тесты под другой учетной записью пользователя . Это означает, что браузер и сервер Java не будут видны вашей учетной записи.

Вот так я запускаю свои тесты с maven на рабочем столе Linux (Ubuntu). Я сыт по горло тем, что не могу работать с веб-драйверами Firefox, которые всегда фокусируются.

Я установил xvfb

  

xvfb-run -a mvn clean install

Вот так

Во многих случаях PhantomJS не вполне соответствует вашим потребностям, я хотел бы остановиться на опции хромированной головки без головы, упомянутой в ответе Дэйва Ханта.

Chrome 57 только что запустил эту функцию. Вы можете использовать его, передав флаг --headless через ChromeDriver, для получения дополнительной информации см. Обсуждение в этот вопрос

Существует связанный с PhantomJS проект под названием GhostDriver , предназначенный для запуска экземпляров PhantomJS в Selenium Grid. используя протокол проводного веб-драйвера JSON. Это, вероятно, то, что вы ищете, хотя этому вопросу уже 4 года.

В MacOSX мне не удалось скрыть окно браузера, но, по крайней мере, я понял, как переместить его на другой экран, чтобы он не сильно нарушал мой рабочий процесс. Пока Firefox выполняет тесты, просто щелкните его значок в док-станции, удерживая клавишу Control, выберите «Параметры» и «Назначить для отображения 2».

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

Лучше всего было бы использовать Chrome без головы, или вы могли бы публиковать сообщения непосредственно на сайте для взаимодействия с ним, что позволило бы сэкономить много вычислительных ресурсов для других вещей / процессов. Я использую это при тестировании роботов веб-автоматизации, которые ищут обувь на нескольких сайтах, используя тяжелые элементы процессора, чем больше энергии вы экономите, и тем проще ваша программа, тем проще запускать сразу несколько процессов с большей скоростью и надежность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top