Заполнение поля "Свойства" (заполнено автоматически, путем записи действий в Recorder)
{"acceptInsecureCerts":true, "browserName":"chrome", "goog: loggingPrefs":{"browser":"ALL"}, "timeouts":{"implicit":0,"pageLoad":300003,"script":30003}, "unhandledPromptBehavior":"dismiss", "goog:chromeOptions":{"args":["disable-popup-blocking","disable-notifications","no-sandbox"],"extensions":[]}}
Свойства браузера выглядят примерно следующим образом:
{"acceptInsecureCerts":true, "browserName":"chrome", "goog: loggingPrefs":{"browser":"ALL"}, "timeouts":{"implicit":0,"pageLoad":300003,"script":30003}, "unhandledPromptBehavior":"dismiss", "goog:chromeOptions":{"args":["disable-popup-blocking","disable-notifications","no-sandbox","--disable-blink-features=AutomationControlled"],"extensions":[]}}
Большинство возможностей доступно через объект ChromeOptions (выделены в свойствах жирным начертанием). Он используется для управления различными свойствами драйвера браузера. Поэтому данный объект интересует нас в большей степени.
Обозначается следующим образом:
"goog:chromeOptions":{"Опция 1": Значение 1, "Опция 2": Значение 2}.
Значений опций могут быть следующих типов:
- Строка – "text";
- Список строк – ["text1", "text2"];
- Словарь - {"key1": "value1","key2": "value2"};
- Логический тип – false/true.
В примере, в самом начале текста, использованы опции «args» и «extensions». Весь список опции объекта ChromeOptions представлен в таблице. Зеленым выделены наиболее часто используемые.
Имя опции | Тип | По умолчанию | Описание опции |
---|---|---|---|
args | Список строк | Список аргументов командной строки, используемых при запуске Chrome. Аргументы со связанным значением должны быть разделены знаком '=' (например, ‘args’ : ['start-maximized', 'user-data-dir=C:/Users/User/AppData/Local/Google/Chrome/User Data/Default']). Список аргументов Chrome. | |
binary | Строка | Путь к исполняемому файлу Chrome для использования. | |
debuggerAddress | Строка | Адрес сервера отладчика Chrome для подключения в виде <hostname/ip:port>, например '127.0.0.1:38947' | |
detach | Логический тип | false | Если значение равно false, Chrome будет закрыт, когда ChromeDriver будет убит, независимо от того, завершен ли сеанс. Если значение равно true, Chrome будет закрыт только в том случае, если сеанс завершен (или закрыт). Обратите внимание, что если значение равно true и сеанс не завершен, ChromeDriver не сможет очистить каталог временных данных пользователя, используемый запущенным экземпляром Chrome. |
excludeSwitches | Список строк | Список переключателей командной строки Chrome, чтобы исключить передачу ChromeDriver по умолчанию при запуске Chrome. Указывать свитчи без префикса --. | |
extensions | Список строк | Список расширений Chrome для установки при запуске. Каждый элемент в списке должен иметь упакованное расширение Chrome в кодировке base-64 (.crx) Получение crx расширения | |
localState | Словарь | Словарь с каждой записью, состоящей из названия предпочтения и его значения. Эти установки применяются к файлу локального состояния в папке пользовательских данных. | |
minidumpPath | Строка | Каталог для хранения мини-дампов Chrome. (Поддерживается только в Linux.) | |
mobileEmulation | Словарь | Словарь со значением "deviceName" или значениями для "deviceMetrics" и "userAgent". Дополнительные сведения см. в разделе Эмуляция мобильных устройств. https://chromedriver.chromium.org/mobile-emulation Пример: "mobileEmulation": {"deviceName": "iPhone 12 Pro"} | |
prefs | Словарь | Словарь с каждой записью, состоящей из названия предпочтения и его значения. Эти настройки применяются только к используемому профилю пользователя. Примеры см. в файле «Preferences» в каталоге пользовательских данных Chrome (C:\Users\{User}\AppData\Local\Google\Chrome\User Data\{GoogleUser}). | |
windowTypes | Список строк | Список типов окон, которые будут отображаться в списке дескрипторов окон. Для доступа к элементам <webview> включите в этот список "webview". |
Часть свойств для запуска Chrome/Яндекс:
{"goog:chromeOptions":{ "args":[ "-disable-blink-features=AutomationControlled", "disable-popup-blocking", "disable-notifications", "disable-infobars", "disable-gpu", "no-sandbox", "disable-extensions", "start maximized", "user-data-dir=C^//Users//robin_user//APPData//Local//Yandex//YandexBrowser//User Data", "profile-directory=Profile 1" ], "excludeSwitches":["enable-automation"], "extensions":[] } }
ВАЖНО!
Строка "excludeSwitches":["enable-automation"] позволяет отключить проверку на управление автоматизированным ПО, а аргумент "disable-extensions" блокирует загрузку плагинов.
В процессе загрузки плагина проверяется, не работает ли браузер под управлением автоматизированного ПО.
Для того, чтобы загрузить плагин необходимо отключить проверку на управление автоматизированным ПО, а аргумент "disable-extensions" удалить.
Возможны ситуации, когда при загрузке страницы, страница пользователю видна и с ней можно взаимодействовать, при этом страница продолжает загрузку. Робот же останавливается и ожидает окончания загрузки страницы. Чтобы робот продолжил свою работу, нужно принудительно отменить загрузку.
Для этого нужно указать в свойствах "pageLoadStrategy":
{"acceptInsecureCerts":true,"browserName":"chrome","goog: loggingPrefs":{"browser":"ALL"},"pageLoadStrategy": "eager", "timeouts":{"implicit":0,"pageLoad":300003,"script":30003}, "unhandledPromptBehavior":"dismiss", "goog:chromeOptions":{"args":["disable-popup-blocking","disable-notifications","no-sandbox"],"extensions":[]}}
Кроме того, вместо значения "eager" можно указать значение "none", но тогда есть риск что страница не загрузится. Значение "eager" ждет только загрузки DOM страницы, не ожидая загрузки скриптов, изображений и других ресурсов, значение "none" вообще не ждет.