Возможности и опции Chrome

Возможности — это параметры, которые вы можете использовать для настройки сеанса ChromeDriver. На этой странице описаны все возможности, поддерживаемые ChromeDriver, и способы их использования.

Языковые API WebDriver предоставляют способы передачи возможностей ChromeDriver. Точный механизм зависит от языка, но большинство языков используют один или оба следующих механизма:

  1. Используйте класс ChromeOptions . Это поддерживается Java, Python и т. д.
  2. Используйте класс DesiredCapabilities . Это поддерживается Python, Ruby и т. д. Хотя оно также доступно в Java, его использование в Java не рекомендуется.

Использование класса ChromeOptions

Вы можете создать экземпляр ChromeOptions , который имеет удобные методы для настройки возможностей, специфичных для ChromeDriver. Затем вы можете передать объект ChromeOptions в конструктор ChromeDriver:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Начиная с версии Selenium 3.6.0, класс ChromeOptions в Java также реализует интерфейс Capabilities , позволяющий указывать другие возможности WebDriver, не специфичные для ChromeDriver.

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Используйте желаемые возможности

Чтобы использовать DesiredCapabilities , вам необходимо знать имя возможности и тип значения, которое она принимает. Посмотреть полный список .

Питон

caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Руби

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
  "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

Распространенные случаи использования

Используйте собственный профиль

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

При использовании временного профиля вы можете использовать возможность chrome.prefs , чтобы указать настройки, которые будут применяться после запуска Chrome. Для пользовательских профилей вы можете использовать переключатель командной строки Chrome user-data-dir чтобы указать Chrome, какой профиль использовать:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

Создайте свой собственный профиль, запустив Chrome из командной строки или с помощью ChromeDriver, используя переключатель user-data-dir установленный на какой-то новый каталог.

Если путь не существует, Chrome создаст новый профиль в указанном месте. Затем вы можете изменить настройки профиля, и ChromeDriver сможет использовать этот профиль в будущем. Откройте chrome://version в браузере, чтобы увидеть, какой профиль использует Chrome.

Запустить Chrome в развернутом виде

Запустите Chrome в развернутом виде, используя переключатель start-maximized :

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

Используйте исполняемый файл Chrome в нестандартном месте.

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

Блокировать диалоговые окна

По умолчанию ChromeDriver настраивает Chrome на разрешение всплывающих окон. Если вы хотите заблокировать всплывающие окна и восстановить нормальное поведение Chrome, когда оно не контролируется ChromeDriver, сделайте следующее:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

Установить каталог загрузки

Следующий код можно использовать для настройки Chrome для загрузки файлов в определенный каталог. Однако есть несколько предостережений, о которых следует знать:

  • Chrome запрещает использовать определенные каталоги для загрузки. В частности, вы не можете использовать папку рабочего стола в качестве каталога для загрузки. В Linux вы не можете использовать домашний каталог для загрузки. Точный список запрещенных каталогов может меняться, поэтому мы рекомендуем вам использовать уникальный каталог, не имеющий особого значения для системы.
  • ChromeDriver не ожидает завершения загрузки автоматически. Если вы вызовете driver.quit() слишком рано, Chrome может завершить работу до завершения загрузки.
  • Для достижения наилучших результатов используйте полные пути, поскольку относительные пути не всегда работают.
  • В Windows используйте \` as path separators. /` ненадежен в Windows.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Признанные возможности

Прочтите документацию Selenium и стандарт W3C WebDriver, чтобы узнать о стандартных возможностях, принятых ChromeDriver. Здесь мы перечисляем возможности, специфичные для Chrome.

Объект ChromeOptions

Большинство возможностей Chrome предоставляются через объект ChromeOptions . В некоторых языках они реализованы классом ChromeOptions . На других языках они хранятся в словаре goog:chromeOptions в выбранных возможностях.

Имя Тип По умолчанию Описание
args список строк Список аргументов командной строки, которые можно использовать при запуске Chrome. Аргументы со связанным значением должны быть разделены знаком «=" (например, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). См. список аргументов Chrome .
binary нить Путь к исполняемому файлу Chrome, который будет использоваться.
В macOS X это должен быть настоящий двоичный файл, а не просто приложение, например /Applications/Google Chrome.app/Contents/MacOS/Google Chrome .
extensions список строк Список расширений Chrome, которые необходимо установить при запуске. Каждый элемент в списке должен представлять собой упакованное расширение Chrome в кодировке Base64 (.crx).
localState словарь Словарь, каждая запись которого состоит из имени предпочтения и его значения. Эти настройки применяются к файлу локального состояния в папке пользовательских данных.
prefs словарь Словарь, каждая запись которого состоит из имени предпочтения и его значения. Эти настройки применяются только к используемому профилю пользователя. Примеры см. в файле «Настройки» в каталоге пользовательских данных Chrome.
detach логическое значение ЛОЖЬ Если значение равно false, Chrome закрывается при закрытии ChromeDriver, независимо от того, завершен ли сеанс.
Если это правда, Chrome завершает работу только в том случае, если сеанс завершен или закрыт. Если это правда и сеанс не завершен, ChromeDriver не может очистить временный каталог пользовательских данных, который использует работающий экземпляр Chrome.
debuggerAddress нить
Адрес сервера отладчика Chrome для подключения в виде <имя хоста/ip:порт>, например «127.0.0.1:38947».
excludeSwitches список строк Список переключателей командной строки Chrome, позволяющих исключить передачу ChromeDriver по умолчанию при запуске Chrome. Не добавляйте к переключателям префикс -- .
minidumpPath нить Каталог для хранения минидампов Chrome. (Поддерживается только в Linux.)
mobileEmulation словарь Словарь со значением «deviceName» или значениями «deviceMetrics» и «userAgent». Дополнительную информацию см. в разделе Эмуляция мобильных устройств .
perfLoggingPrefs словарь Необязательный словарь, определяющий настройки ведения журнала производительности. Дополнительную информацию см. ниже.
windowTypes список строк Список типов окон, которые отображаются в списке дескрипторов окон. Для доступа к элементам веб-просмотра включите в этот список «веб-просмотр».

объект perfLoggingPrefs

Словарь perfLoggingPrefs имеет следующий формат. Все ключи являются необязательными:

Имя Тип По умолчанию Описание
enableNetwork логическое значение истинный Следует ли собирать события из сетевого домена.
enablePage логическое значение истинный Следует ли собирать события из домена страницы.
traceCategories нить (пустой) Разделенная запятыми строка категорий трассировки Chrome, для которых следует собирать события трассировки. Неопределенная или пустая строка отключает трассировку.
bufferUsageReportingInterval положительное целое число 1000 Запрошенное количество миллисекунд между событиями использования буфера трассировки DevTools. Например, если 1000, то раз в секунду DevTools сообщает, насколько заполнен буфер трассировки. Если в отчете указано, что использование буфера составляет 100 %, выдается предупреждение.

Возвращенные возможности

Вот список всех возвращаемых возможностей Chrome, другими словами, то, что ChromeDriver возвращает при создании нового сеанса.

Имя Тип Описание
chrome.chromedriverVersion нить версия ChromeDriver
userDataDir нить путь к каталогу пользовательских данных, который использует Chrome; обратите внимание, это внутри словаря Chrome