Selenium браузер в фоновом режиме
Селен + Python Настройка параметров браузера Chrome
1. Справочная информация
При использовании технологии рендеринга в браузере selenium для сканирования информации на сайте по умолчанию это обычный браузер с чистым Chrome, и мы обычно добавляем некоторые плагины, расширения, агенты и другие приложения при использовании браузера. Соответственно, когда мы используем браузер Chrome для сканирования веб-сайта, нам может потребоваться выполнить специальную настройку для этого хрома, чтобы он соответствовал поведению сканера.
Обычно используемые поведения:
Запретить загрузку изображений и видео. Увеличьте скорость загрузки веб-страниц.
Добавить прокси: технология защиты от лазания, используемая для доступа к определенным страницам через стену или реагирования на ограничения частоты доступа по IP.
Использовать мобильную голову: зайдите на мобильный сайт, как правило, технология против скалолазания на этом сайте относительно слаба.
Добавить расширения: функционирует как обычный браузер.
Установите код: ответьте на китайскую станцию, чтобы предотвратить искажение символов.
Блокировать выполнение JavaScript.
………
2. Окружающая среда
python 3.6.1
Система: win7
IDE:pycharm
Установили браузер Chrome
Хромированный драйвер настроен
selenium 3.7.0
ChromeOptions - это класс, который настраивает запуск Chrome как атрибут. С помощью этого класса мы можем настроить следующие параметры для Chrome (эту часть можно увидеть через исходный код селена):
Установить местоположение двоичного файла Chrome (binary_location)
Добавить параметры запуска (add_argument)
Добавить приложение расширения (add_extension, add_encoded_extension)
Добавить параметры экспериментальной настройки (add_experimental_option)
Установить адрес отладчика (debugger_address)
4. Общая конфигурация
4.1 Установить формат кодировки
4.2 Моделирование мобильных устройств
4.3 Запретить загрузку изображений
Это может увеличить скорость сканирования без загрузки изображений.
4.4 Добавить агента
Добавьте прокси-сервер для искателя селена. В этом месте особенно важно отметить, что при выборе прокси-сервера старайтесь выбирать статический IP-адрес, чтобы повысить стабильность сканирования. Потому что если вы выбираете селен в качестве сканера, это означает, что антискользящая способность веб-сайта относительно высока (в противном случае он находится прямо на скрапе), и у него более высокий контроль согласованности между веб-страницами, файлами cookie и статусом пользователя. Если вы используете динамический анонимный IP, время выживания каждого IP будет очень коротким (1
4.5 Настройки параметров браузера
Обычно Selenium открывает чистый браузер без расширений, но иногда мы хотим установить в браузере некоторые настройки, например, установить значение по умолчанию для параметра flash, чтобы всегда разрешать глобальное удаление файлов cookie, очистку кешей и тому подобное.
Для достижения этой цели существует способ мышления. В качестве примера ниже приводится браузер Chrome:
Когда запускается искатель селена, сначала откройте окно, введите в адресную строку: chrome: // settings / content или chrome: // settings / privacy, а затем программу, как в обычном веб-приложении. Аналогично, установите и сохраните.
Напишите описание изображения здесь
4.6. Добавить приложение для расширения браузера
Обычно Selenium открывает чистый браузер без расширений, но иногда нам нужно использовать некоторые плагины для обхода данных, такие как класс синтаксического анализа xpath helper, класс перевода и получение дополнительной информации (продажи). Итак, как мы можем добавить некоторые плагины, которые нам нужны, когда мы запускаем chromedriver?
Ниже приведен пример загрузки подключаемого модуля Xpath Helper в Chrome:
4.6.2 Заполните путь к плагину в коде
4.6.3 Отображение результатов
Напишите описание изображения здесь
4.6.4. Примечания
5. Другие параметры
5.1 Команды адресной строки Chrome
Введите следующую команду в адресной строке браузера Chrome, и соответствующий результат будет возвращен. Эти команды включают в себя просмотр состояния памяти, состояния браузера, состояния сети, состояния DNS-сервера, кеша подключаемых модулей и т. Д. Однако следует отметить, что эти команды постоянно меняются, поэтому их не обязательно легко использовать.
about: version - отображает текущую версию
about: memory - отображает использование памяти локальным браузером
about: plugins-отображает установленные плагины
about: история отображения гистограмм
about: dns-отображает статус DNS
about: кэш-страница отображения кеша
about: gpu-есть ли аппаратное ускорение
О файле: flags-Open Некоторые плагины // После использования что-то всплывает: «Пожалуйста, будьте осторожны, эти эксперименты могут быть рискованными», интересно, если я испорчу свою конфигурацию!
chrome: // extensions / -Просмотреть установленные расширения
5.2 Практические параметры Chrome
Некоторые другие практические параметры о Chrome и краткие китайские инструкции, способ использования такой же, как и выше 4.5.4, конечно, его также можно использовать в оболочке.
I have a Selenium test suite that runs many tests and on each new test it opens a browser window on top of any other windows I have open. Very jarring while working in a local environment. Is there a way to tell Selenium or the OS (Mac) to open the windows in the background?
18 Answers 18
If you are using Selenium web driver with Python, you can use PyVirtualDisplay, a Python wrapper for Xvfb and Xephyr.
PyVirtualDisplay needs Xvfb as a dependency. On Ubuntu, first install Xvfb:
Then install PyVirtualDisplay from PyPI:
Sample Selenium script in Python in a headless mode with PyVirtualDisplay:
EDIT
The initial answer was posted in 2014 and now we are at the cusp of 2018. Like everything else, browsers have also advanced. Chrome has a completely headless version now which eliminates the need to use any third-party libraries to hide the UI window. Sample code is as follows:
There are a few ways, but it isn't a simple "set a configuration value". Unless you invest in a headless browser, which doesn't suit everyone's requirements, it is a little bit of a hack:
You can 'supposedly', pass in some parameters into Chrome, specifically: --no-startup-window
Note that for some browsers, especially Internet Explorer, it will hurt your tests to not have it run in focus.
You can also hack about a bit with AutoIt, to hide the window once it's opened.
Chrome 57 has an option to pass the --headless flag, which makes the window invisible.
This flag is different from the --no-startup-window as the last doesn't launch a window. It is used for hosting background apps, as this page says.
Java code to pass the flag to Selenium webdriver (ChromeDriver):
Do you know if it is possible to do the same in VBA language?For running without any browser, you can run it in headless mode.
I show you one example in Python that is working for me right now
Since Chrome 57 you have the headless argument:
The headless mode of Chrome performs 30.97% better than the UI version. The other headless driver PhantomJS delivers 34.92% better than the Chrome's headless mode.
PhantomJSDriver
The headless mode of Mozilla Firefox performs 3.68% better than the UI version. This is a disappointment since the Chrome's headless mode achieves > 30% better time than the UI one. The other headless driver PhantomJS delivers 34.92% better than the Chrome's headless mode. Surprisingly for me, the Edge browser beats all of them.
This is available from Firefox 57+
The headless mode of Mozilla Firefox performs 3.68% better than the UI version. This is a disappointment since the Chrome's headless mode achieves > 30% better time than the UI one. The other headless driver PhantomJS delivers 34.92% better than the Chrome's headless mode. Surprisingly for me, the Edge browser beats all of them.
У меня есть набор тестов на селен, который выполняет много тестов, и при каждом новом тесте он открывает окно браузера поверх всех других открытых мной окон. Очень резкий, работая в местной среде. Любой способ сказать селен или ОС (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, который запускает много тестов, и при каждом новом тесте он открывает окно браузера поверх любых других окон, которые я открываю. Очень неудобно работать в локальной среде. Любой способ сказать селену или ОС (MAC) открыть окна в фоновом режиме?
ОТВЕТЫ
Ответ 1
Существует несколько способов, но это не просто "установить значение конфигурации". Если вы не инвестируете в безмозглый браузер, который не соответствует всем требованиям, это немного взломает:
Вы можете "предположительно", передать некоторые параметры в Chrome, в частности: --no-startup-window
Обратите внимание, что для некоторых браузеров, особенно для IE, это повредит вашим тестам, чтобы они не работали в фокусе.
Вы также можете немного взломать AutoIT, чтобы скрыть окно после его открытия.
Ответ 2
Если вы используете веб-драйвер Selenium с Python, вы можете использовать PyVirtualDisplay, оболочку Python для Xvfb и Xephyr.
PyVirtualDisplay нуждается в Xvfb в качестве зависимости. На Ubuntu сначала установите Xvfb:
затем установите PyVirtualDisplay из Pypi:
Пример Selenium script в Python в режиме без звука с PyVirtualDisplay:
ИЗМЕНИТЬ Первоначальный ответ был опубликован в 2014 году, и теперь мы находимся на пороге 2018 года. Как и все остальное, браузеры также продвинулись. Chrome теперь имеет совершенно безголовую версию, которая устраняет необходимость использования каких-либо сторонних библиотек для скрытия окна пользовательского интерфейса. Пример кода выглядит следующим образом:
Ответ 3
Chrome 57 имеет возможность пропускать флаг --headless, что делает окно невидимым.
Этот флаг отличается от -no-startup-window, поскольку последний не запускает окно. Он используется для размещения фоновых приложений, как говорится в на этой странице.
Java-код для передачи флага в Selenium webdriver (ChromeDriver):
Ответ 4
Начиная с Chrome 57 у вас есть аргумент без головы:
Безголовый режим Chrome работает на 30,97% лучше, чем версия пользовательского интерфейса. Другой безголовый драйвер PhantomJS поставляет на 34,92% лучше, чем режим Chrome без наушников.
PhantomJSDriver
Безголовый режим Mozilla Firefox работает на 3,68% лучше, чем версия пользовательского интерфейса. Это разочарование, так как режим Chrome headless достигает> на 30% лучшего времени, чем пользовательский интерфейс. Другой безголовый драйвер PhantomJS поставляет на 34,92% лучше, чем режим Chrome без наушников. Удивительно для меня, браузер Edge бьет их всех.
Это доступно в Firefox 57+
Безголовый режим Mozilla Firefox работает на 3,68% лучше, чем версия пользовательского интерфейса. Это разочарование, так как режим Chrome headless достигает> на 30% лучшего времени, чем пользовательский интерфейс. Другой безголовый драйвер PhantomJS поставляет на 34,92% лучше, чем режим Chrome без наушников. Удивительно для меня, браузер Edge бьет их всех.
Примечание: PhantomJS больше не поддерживается!
Ответ 5
Для запуска без какого-либо браузера вы можете запустить его в автономном режиме.
Я покажу вам один пример в Python, который работает на меня прямо сейчас
Ответ 6
Я предлагаю использовать Phantom Js для получения дополнительной информации вам нужно посетить Phantom Официальный сайт
Насколько я знаю, PhantomJS работает только с Firefox..
Теперь все, что вам нужно в коде Selenium, это изменить строку
Чтобы что-то вроде
Путь к phantomjs может быть другим. измените, как вам нравится:)
Что это, это сработало для меня. и определенно он будет работать для вас, Cheers
Ответ 7
В Windows вы можете использовать win32gui:
Ответ 8
Это может быть в настройках. Вот идентичный код Java.
Ответ 9
В * nix вы также можете запустить безголовый X-сервер, такой как Xvfb, и указать для него переменную DISPLAY:
Ответ 10
Скопируйте файл .exe из папки bin при загрузке и вставке в папку bin debug/release в проекте Visual Studio.
Добавьте это, используя
В вашем коде откройте драйвер следующим образом:
Ответ 11
Ответ 12
Затем установите браузер (например, Chrome) на другое рабочее пространство (например, рабочее пространство 2). Браузер будет тихо работать в другом рабочем пространстве и больше не беспокоить вас. Вы по-прежнему можете использовать Chrome в своем рабочем пространстве без перерыва.
Ответ 13
Я надеюсь, что это работает для вас.
Ответ 14
Это простое решение NodeJS, которое работает в новой версии Sexium 4.x (возможно, также 3.x).
Читайте также: