Возможности — это параметры, которые вы можете использовать для настройки сеанса 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 в развернутом виде
Запустите 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
в выбранных возможностях.
объект perfLoggingPrefs
Словарь perfLoggingPrefs
имеет следующий формат. Все ключи являются необязательными:
Возвращенные возможности
Вот список всех возвращаемых возможностей Chrome, другими словами, то, что ChromeDriver возвращает при создании нового сеанса.