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/xvfbwrapperPython код для запуска без головы будет выглядеть так:
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