Можно ли скрыть браузер в Selenium RC?



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

1265   11  

11 ответов:

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

  • вы можете использовать Selenium Grid, чтобы браузер был открыт на совершенно другой машине (или виртуальной машине), к которой вы можете подключиться через VNC или подключение к удаленному рабочему столу, если хотите увидеть браузер. Кроме того, другой вариант: если вы запустите процесс Jenkins foreground на этом удаленном сервере, он может выполнить ваш тестовый проект на рабочем столе.

  • вы можете запустить Selenium 'headless' на 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, а также "безголовый хром", который вы можете использовать.

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

в Linux вы можете запустить WebDriver на безголовом (виртуальном) дисплее, чтобы скрыть браузер. Это можно сделать с помощью Xvfb (X virtual framebuffer).

вы можете управлять 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()

to:

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 webdriver, всегда сосредотачиваясь.

Я установил xvfb

xvfb-run-a mvn clean install

вот это

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

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

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

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

Comments

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