Возможности — это параметры, которые вы можете использовать для настройки сеанса ChromeDriver. На этой странице описаны все возможности, поддерживаемые ChromeDriver, и способы их использования.
Языковые API WebDriver предоставляют способы передачи возможностей ChromeDriver. Точный механизм зависит от языка, но большинство языков используют один или оба следующих механизма:
- Используйте класс
ChromeOptions
. Это поддерживается Java, Python и т. д. - Используйте класс
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
с нужными возможностями.
объект perfLoggingPrefs
Словарь perfLoggingPrefs имеет следующий формат (все ключи являются необязательными):
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
enableNetwork | логическое значение | истинный | Следует ли собирать события из сетевого домена. |
enablePage | логическое значение | истинный | Следует ли собирать события из домена страницы. |
traceCategories | нить | (пустой) | Разделенная запятыми строка категорий трассировки Chrome, для которых следует собирать события трассировки. Неопределенная или пустая строка отключает трассировку. |
bufferUsageReportingInterval | положительное целое число | 1000 | Запрошенное количество миллисекунд между событиями использования буфера трассировки DevTools. Например, если 1000, то раз в секунду DevTools сообщит, насколько заполнен буфер трассировки. Если в отчете указано, что использование буфера составляет 100 %, будет выдано предупреждение. |
Возвращенные возможности
Это список всех возвращаемых возможностей Chrome. (т. е. то, что возвращает ChromeDriver при создании нового сеанса)
Имя | Тип | Описание |
---|---|---|
chrome.chromedriverVersion | нить | версия ChromeDriver |
userDataDir | нить | путь к каталогу пользовательских данных, который использует Chrome; обратите внимание, это внутри словаря Chrome |