Возможности и опции 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 в развернутом виде

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 используйте «» в качестве разделителей путей. Использование «/» ненадежно в 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 (в Mac OS 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 список строк Список типов окон, которые будут отображаться в списке дескрипторов окон. Для доступа к элементам <webview> включите в этот список «webview».

объект perfLoggingPrefs

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

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

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

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

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

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 используйте «» в качестве разделителей путей. Использование «/» ненадежно в 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 (в Mac OS 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 список строк Список типов окон, которые будут отображаться в списке дескрипторов окон. Для доступа к элементам <webview> включите в этот список «webview».

объект perfLoggingPrefs

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

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

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

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

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