Selenium как скрыть браузер
Я использую Selenium RC для автоматизации некоторых операций браузера, но я хочу, чтобы браузер был невидимым. Возможно ли это? Как? А как насчет сетки Selenium? Могу ли я также скрыть окно Selenium RC?
Каждый раз, когда я запускаю экземпляр Firefox через Selenium RC, я получаю 3 windows, который мне не нужен.: дополнения windows уведомляют меня о том, что 3 new add-ons have been installed (поскольку я использую пользовательский профиль для Selenium, к которому он, очевидно, добавляет.
Есть несколько вариантов:
Вы можете использовать сетку Selenium, чтобы браузер открывался на совершенно другой машине (или виртуальной машине), к которой затем можно подключиться через соединение VNC или удаленный рабочий стол, если вы хотите увидеть браузер. Кроме того, еще один вариант: если вы запустите процесс Jenkins переднего плана на этом удаленном сервере, он может выполнить ваш тестовый проект на рабочем столе.
Конечно, есть также возможность использовать такую службу, как SauceLabs, где вы можете запустить свои тесты в cloud. После завершения тестов вы можете посмотреть видео их выполнения.
На Linux вы можете запустить WebDriver на безголовом (виртуальном) дисплее, чтобы скрыть браузер. Это можно сделать с помощью Xvfb (X virtual framebuffer).
Python код для запуска без головы будет выглядеть следующим образом:
Установка зависимостей на Debian/Ubuntu:
Мне легко удалось скрыть окно браузера.
Просто установите PhantomJS . Затем измените эту строку:
rest вашего кода не нужно будет менять, и браузер не откроется. Для целей отладки используйте driver.save_screenshot('screen.jpg') на разных этапах кода.
Я успешно установил Selenium RD и могу сгенерировать php тестовый случай с selenium IDE, но когда я запускаю тестовый случай после запуска сервера selenium RC, он открывает браузер Firefox и после этого в интерфейсе командной строки показывает, что сервер selenium RC не найден. я не могу понять, в.
Selenium RC скрипты работают слишком медленно. Может кто-нибудь мне в этом помочь?. Вот мои конфигурации. OS: Win7(x64) Браузер: IE9 Selenium RC version:2.25 Кроме того, я использую файл selenium-server.jar для подключения к серверу selenium, и мой скрипт не основан на Webdriver, так как я.
+1 для Selenium RC в качестве услуги windows.
Для того, чтобы тесты выполнялись полностью скрытыми, я думаю, что у вас не так много решений, если вы находитесь на windows.
Что бы я сделал, чтобы выделить компьютер в вашем LAN, чтобы все время быть в Сети и иметь работающий сервер selenium RC. Таким образом, вы используете IP этого компьютера вместо localhost для выполнения своих тестов. Например:
(учитывая, что это ip-адрес компьютера, на котором работает сервер).
Имея такую настройку, вы запускаете свои тесты на своем компьютере, браузеры и окно сервера RC находятся на другом компьютере, а после этого возвращаетесь к своему.
На Linux вы можете запустить тестовый браузер на виртуальном дисплее. Вам понадобится пакет xvfb для создания виртуального X-сервера. В дистрибутивах на основе Debian просто запустите
Существует хороший инструмент ephemeral-x.sh , который удобно настроит любую команду для запуска на виртуальном дисплее. Загрузите его и сделайте исполняемым:
Затем вы можете просто использовать его для запуска сервера Selenium:
Все браузеры windows, созданные Selenium, теперь будут использовать виртуальный дисплей и будут невидимы для вас.
Если вы находитесь на Windows, один из вариантов- запустить тесты под другой учетной записью пользователя . Это означает, что браузер и сервер java не будут видны вашей собственной учетной записи.
Вот как я запускаю свои тесты с maven на рабочем столе linux (Ubuntu). Мне надоело, что я не могу работать с firefox webdriver, всегда сосредотачиваясь.
Я установил xvfb
Во многих случаях PhantomJS не полностью удовлетворит ваши потребности, я хотел бы подробнее остановиться на опции безголового хрома, упомянутой в ответе Дэйва Ханта.
Существует связанный с PhantomJS проект под названием GhostDriver , который предназначен для запуска PhantomJS экземпляров в сетке Selenium с использованием протокола webdriver wire JSON. Это, вероятно, то, что вы ищете, хотя этому вопросу уже 4 года.
На MacOSX я не смог скрыть окно браузера, но, по крайней мере, я понял, как переместить его на другой дисплей, чтобы он не так сильно нарушал мой рабочий процесс. Пока Firefox выполняет тесты, просто щелкните правой кнопкой мыши его значок в док-станции, выберите Параметры и назначьте отображение 2.
Кстати, это функция, необходимая любому разработчику, работающему под управлением e2e, которая логически будет порождать браузеры. В среде разработки раздражает иметь дело с окном, которое постоянно появляется и с которым вы можете случайно взаимодействовать, что приводит к сбою теста.
Похожие вопросы:
В течение некоторого времени я исследовал Selenium RC, чтобы провести функциональное тестирование моего веб-приложения. Теперь я нашел стратегию тестирования, которая настолько эффективна, что я не.
Я пытаюсь заставить Хадсона провести мои тесты ruby на основе selenium. Я установил плагин Selenium Grid, но я не хочу, чтобы RC работали как подчиненные в кластере Hudson. Причина этого в том, что.
Мой гугл-фу слаб, и поэтому я обращаюсь к разуму hive. У меня есть сценарий Selenium, который я изначально разработал в IDE, и теперь я пытаюсь адаптировать его для запуска на IE8 через.
Каждый раз, когда я запускаю экземпляр Firefox через Selenium RC, я получаю 3 windows, который мне не нужен.: дополнения windows уведомляют меня о том, что 3 new add-ons have been installed.
Я успешно установил Selenium RD и могу сгенерировать php тестовый случай с selenium IDE, но когда я запускаю тестовый случай после запуска сервера selenium RC, он открывает браузер Firefox и после.
Selenium RC скрипты работают слишком медленно. Может кто-нибудь мне в этом помочь?. Вот мои конфигурации. OS: Win7(x64) Браузер: IE9 Selenium RC version:2.25 Кроме того, я использую файл.
При выполнении скриптов selenium RC для каждого выполнения он просит меня доверять веб-сайту , который является ошибкой сертификата SSL, пожалуйста, помогите мне с пошаговым процессом о том, как.
AUT содержит страницу входа в систему, которая проверяет учетные данные пользователя. После успеха пользователю нужно нажать новую URL на новой вкладке, чтобы получить доступ к фактическому.
Я использую фреймворк Selenium для автоматизации операций браузера. В настоящее время я пытаюсь скрыть браузер. Есть ли какие-то шансы скрыть браузер и выполнить операцию молча?
Я использую Selenium RC для автоматизации некоторых операций браузера, но я хочу, чтобы браузер был невидимым. Это возможно? Как? А как насчет Selenium Grid? Могу ли я также скрыть окно Selenium RC?
Есть несколько вариантов:
Вы можете использовать Selenium Grid, чтобы браузер открывался на совершенно другой машине (или виртуальной машине), к которой затем можно подключиться через VNC или Remote Desktop Connection, если вы хотите увидеть браузер. Кроме того, есть еще один вариант: если вы запускаете процесс переднего плана Jenkins на этом удаленном сервере, он может выполнить ваш тестовый проект на рабочем столе.
Конечно, есть также возможность использовать сервис, такой как SauceLabs, где вы можете запускать свои тесты в облаке. После завершения тестов вы можете посмотреть их видео.
В Linux вы можете запустить WebDriver в автономном (виртуальном) режиме, чтобы скрыть браузер. Это можно сделать с помощью Xvfb (виртуальный кадровый буфер X).
Код Python для запуска без заголовка будет выглядеть следующим образом:
Установить зависимости в Debian /Ubuntu:
Мне легко удалось скрыть окно браузера.
Просто установите PhantomJS . Затем измените эту строку:
Остальной код не нужно менять, и браузер не откроется. В целях отладки используйте driver.save_screenshot('screen.jpg') на разных этапах вашего кода.
+1 для Selenium RC в качестве службы Windows.
Поскольку тесты выполняются полностью скрытно, я думаю, что у вас мало решений, если вы работаете в Windows.
Что бы я сделал, чтобы компьютер в вашей локальной сети был постоянно подключен к сети и работал сервер селена RC. Таким образом, вы используете IP этого компьютера вместо localhost для запуска ваших тестов. Например:
(учитывая, что это ip компьютера, на котором работает сервер).
Имея эту настройку, вы запускаете свои тесты на своем компьютере, браузеры и окно сервера RC находятся на другом компьютере, и вы возвращаетесь к своему, когда закончите.
В Linux вы можете запустить тестовый браузер на виртуальном дисплее. Для создания виртуального X-сервера вам понадобится пакет xvfb . На дистрибутивах на основе Debian просто запустите
Есть хороший инструмент ephemeral-x.sh , которая удобно настроит любую команду для запуска на виртуальном дисплее. Загрузите его и сделайте его исполняемым:
Тогда вы можете просто использовать его для запуска сервера Selenium:
Все окна браузера, созданные Selenium, теперь будут использовать виртуальный дисплей и будут невидимы для вас.
Вот так я запускаю свои тесты с maven на рабочем столе Linux (Ubuntu). Я сыт по горло тем, что не могу работать с веб-драйверами Firefox, которые всегда фокусируются.
Я установил xvfb
Во многих случаях PhantomJS не вполне соответствует вашим потребностям, я хотел бы остановиться на опции хромированной головки без головы, упомянутой в ответе Дэйва Ханта.
Chrome 57 только что запустил эту функцию. Вы можете использовать его, передав флаг --headless через ChromeDriver, для получения дополнительной информации смотрите обсуждение в этот вопрос
Существует связанный с PhantomJS проект под названием GhostDriver , предназначенный для запуска экземпляров PhantomJS в Selenium Grid используя протокол проводного веб-драйвера JSON. Это, вероятно, то, что вы ищете, хотя этому вопросу уже 4 года.
В MacOSX мне не удалось скрыть окно браузера, но, по крайней мере, я понял, как переместить его на другой экран, чтобы он не сильно нарушал мой рабочий процесс. Пока Firefox выполняет тесты, просто щелкните его значок в док-станции, удерживая клавишу Control, выберите «Параметры» и «Назначить для отображения 2».
Кстати, эта функция нужна любому разработчику, работающему с e2e, который логически будет запускать браузеры. В среде разработки раздражает иметь дело с окном, которое постоянно появляется, и с которым вы можете случайно взаимодействовать, делая тест неудачным.
У меня есть набор тестов на селен, который выполняет много тестов, и при каждом новом тесте он открывает окно браузера поверх всех других открытых мной окон. Очень резкий, работая в местной среде. Любой способ сказать селен или ОС (MAC), чтобы открыть окна в фоновом режиме?
Есть несколько способов, но это не просто «установить значение конфигурации». Если вы не вкладываете средства в безголовый браузер, который не удовлетворяет всем требованиям, это будет своего рода хакером:
Вы можете «предположительно» передать некоторые параметры в Chrome, в частности: --no-startup-window
Обратите внимание, что для некоторых браузеров, особенно IE, тестам будет больно, если они не будут работать в фокусе.
Вы также можете немного взломать AutoIT, чтобы скрыть окно после его открытия.
Если вы используете веб-драйвер Selenium с Python, вы можете использовать PyVirtualDisplay, оболочку Python для Xvfb и Xephyr.
PyVirtualDisplay требует Xvfb в качестве зависимости. В Ubuntu сначала установите Xvfb:
затем установите PyVirtualDisplay из Pypi:
Пример сценария Selenium на Python в автономном режиме с PyVirtualDisplay:
ИЗМЕНИТЬ Первоначальный ответ был опубликован в 2014 году, и теперь мы на пороге 2018 года. Как и все остальное, браузеры также продвинулись вперед. Chrome имеет полностью автономную версию, что устраняет необходимость использования сторонних библиотек для скрытия окна пользовательского интерфейса. Пример кода выглядит следующим образом:
Chrome 57 имеет возможность передавать флаг --headless, что делает окно невидимым.
Этот флаг отличается от --no-startup-window, поскольку последний не запускает окно. Он используется для размещения фоновых приложений, как говорится на этой странице .
Java-код для передачи флага веб-драйверу Selenium (ChromeDriver):
Начиная с Chrome 57 у вас есть беспричинный аргумент:
Режим без головы в Chrome работает на 30,97% лучше, чем в версии пользовательского интерфейса. Другой безголовый драйвер PhantomJS работает на 34,92% лучше, чем безголовый режим Chrome.
PhantomJSDriver
Режим без головы в Mozilla Firefox работает на 3,68% лучше, чем в версии пользовательского интерфейса. Это разочарование, поскольку безголовый режим Chrome достигает> 30% лучше, чем пользовательский интерфейс. Другой безголовый драйвер PhantomJS работает на 34,92% лучше, чем безголовый режим Chrome. Удивительно для меня, браузер Edge побеждает их всех.
Это доступно из Firefox 57 +
Режим без головы в Mozilla Firefox работает на 3,68% лучше, чем в версии пользовательского интерфейса. Это разочарование, поскольку безголовый режим Chrome достигает> 30% лучше, чем пользовательский интерфейс. Другой безголовый драйвер PhantomJS работает на 34,92% лучше, чем безголовый режим Chrome. Удивительно для меня, браузер Edge побеждает их всех.
Примечание: PhantomJS больше не поддерживается!
Для запуска без браузера вы можете запустить его в режиме без головы .
Я покажу вам один пример на Python, который работает для меня прямо сейчас
Я также добавляю вам немного больше информации об этом на официальном сайте Google
В Windows вы можете использовать win32gui:
В * nix вы также можете запустить безголовый X-сервер, такой как Xvfb, и указать для него переменную DISPLAY:
Скопируйте .exe из папки bin в загрузку и вставьте в папку bin debug /release вашего проекта Visual Studio.
Я работаю над проектом с selenium, чтобы очистить данные, но я не хочу, чтобы браузер открывался и всплывал. Я просто хотел скрыть браузер, а также не отображать его на панели задач.
Некоторые также предлагали использовать phantomJS, но я их не получил. Что же теперь делать .
3 ответа
Я использую фреймворк Selenium для автоматизации операций браузера. В настоящее время я пытаюсь скрыть браузер. Есть ли какие-то шансы скрыть браузер и выполнить операцию молча?
Если вы используете Chrome, вы можете просто установить аргумент headless следующим образом:
Для chrome вы можете передать параметр --headless.
В качестве альтернативы вы можете позволить selenium работать на виртуальном дисплее, подобном этому:
Последнее работало на меня довольно хорошо.
Чтобы скрыть браузер при выполнении тестов с использованием Selenium 's python , вы можете использовать метод minimize_window(), который в конечном итоге минимизирует/эффективно выталкивает контекст просмотра Chrome в фоновый режим, используя следующее решение:
Альтернатива
В качестве альтернативы вы можете использовать атрибут headless для настройки ChromeDriver для запуска браузера google-chrome в безголовом режиме с помощью Selenium , и вы можете найти пару соответствующих обсуждений в разделе:
Когда Selenium запускается, он открывает браузер и начинает заполнять данные, но когда пользователь нажимает где-то в браузере во время работы selenium , то выполнение selenium останавливается, что приводит к сбою моего приложения, можно ли обрабатывать такие сбои
Я написал код python selenium, который автоматизирует действия на веб-сайте. Как только пользователь аутентифицирует вход в систему, selenium берет на себя управление браузером и делает свое дело. Все работает отлично, однако я замечаю, что код может потерпеть неудачу, если пользователь случайно.
Похожие вопросы:
Есть ли способ изменить node.js, пока он работает? Например, отредактируйте файлы javascript во время работы, а затем измените их соответствующим образом во время работы.
Я использую Selenium RC для автоматизации некоторых операций браузера, но я хочу, чтобы браузер был невидимым. Возможно ли это? Как? А как насчет сетки Selenium? Могу ли я также скрыть окно Selenium.
Есть ли способ вернуть xpath элемента в Selenium во время выполнения, который xpath изменяется каждый раз, когда вы возвращаетесь на страницу? Мне нужно извлечь случайное число из xpath элемента.
Я использую фреймворк Selenium для автоматизации операций браузера. В настоящее время я пытаюсь скрыть браузер. Есть ли какие-то шансы скрыть браузер и выполнить операцию молча?
Когда Selenium запускается, он открывает браузер и начинает заполнять данные, но когда пользователь нажимает где-то в браузере во время работы selenium , то выполнение selenium останавливается, что.
Я написал код python selenium, который автоматизирует действия на веб-сайте. Как только пользователь аутентифицирует вход в систему, selenium берет на себя управление браузером и делает свое дело.
У меня работает код Selenium, если тест провалится, я хочу увидеть весь процесс от начала до конца (не используя скриншот), что-то знаю, как можно записать экран во время работы selenium. from.
У меня есть скрипт Python для очистки веб -страниц с использованием Selenium. В том, что я хочу выполнить сценарий за определенный промежуток времени. Для этого я хочу знать, как планировать.
Читайте также: