В этом учебном пособии вы узнаете:
- Что такое класс параметров Chrome?
- Класс желаемых возможностей
- Параметры Chrome для расширения Adblocker
- Параметры Chrome для режима инкогнито
- Параметры Chrome для безголового браузера
Что такое класс параметров Chrome?
Класс Chromeoptions – это концепция в Selenium WebDriver для манипулирования различными свойствами драйвера Chrome. Класс параметров Chrome обычно используется вместе с желаемыми возможностями для настройки сеансов драйверов Chrome. С его помощью можно выполнять различные операции, такие как открытие Chrome в развернутом режиме, отключение существующих расширений и всплывающих окон и т.д.
Пример:
В приведенном ниже примере показан способ открытия браузера Chrome в развернутом режиме с использованием класса ChromeOptions. Для инициализации веб-драйвера нам необходимо передать экземпляр класса ChromeOptions.
ChromeOptions options = new ChromeOptions() options.addArgument("start-maximized"); ChromeDriver driver = new ChromeDriver(options);
Ниже приведен список доступных и наиболее часто используемых аргументов для класса ChromeOptions:
- start-maximized: открывает Chrome в режиме максимизации.
- incognito: открывает Chrome в режиме инкогнито.
- headless: открывает Chrome в безголовом режиме.
- disable-extensions: отключает существующие расширения в браузере Chrome
- disable-popup-blocking: отключает всплывающие окна, отображаемые в браузере Chrome
- make-default-browser: делает Сhrome браузером по умолчанию
- version: выводит версию браузера Мhrome
- disable-infobars: запрещает Chrome отображать уведомление «Chrome управляется автоматическим программным обеспечением».
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Класс желаемых возможностей
Класс желаемых возможностей используется для изменения нескольких свойств веб-драйверов. Он предоставляет пары ключ-значение для изменения отдельных свойств веб-драйверов, таких как имя браузера, платформа и т.д. Распространенным методом класса Desired Capabilities является метод setCapability. Он чаще всего используется в Selenium Grid, когда один и тот же тестовый пример должен выполняться на разных браузерах.
Пример:
В приведенном ниже примере показано, как с помощью класса Desired Capabilities for Chrome разрешить браузеру Сhrome принимать SSL-сертификаты на сайтах по умолчанию.
// Create an object of desired capabilities class with Chrome driver DesiredCapabilities SSLCertificate = DesiredCapabilities.chrome(); // Set the pre defined capability – ACCEPT_SSL_CERTS value to true SSLCertificate.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); // Open a new instance of chrome driver with the desired capability WebDriver driver = new ChromeDriver(SSLCertificate);
Ниже приведены наиболее часто используемые предопределенные типы возможностей:
Название возможности | Описание |
---|---|
ACCEPT_SSL_CERTS | Указывает браузеру на необходимость принимать SSL-сертификаты по умолчанию. |
PLATFORM_NAME | Используется для задания платформы операционной системы, используемой для доступа к веб-сайту |
BROWSER_NAME | Применяется для задания имени браузера для экземпляра веб-драйвера |
VERSION | Используется для установки версии браузера |
Параметры Chrome для расширения Adblocker
Для работы с расширением Adblocker в браузере Chrome используются параметры ChromeDriver и класс Desired Capabilities. Ниже описаны шаги, позволяющие получить доступ к расширению AdBlocker в браузере Chrome с помощью класса Desired Capabilities.
Шаг 1. Перед использованием класса параметров Chrome установите расширение AdBlocker в браузере Chrome.
Шаг 2. Извлеките CRX-файл, соответствующий расширению AdBlocker, через http://crxextractor.com/.
Шаг 3. Передайте путь к загруженному CRX-файлу классу Chrome Options
Шаг 4. Инстанцируйте веб-драйвер, используя нужный класс Capabilities и Chrome Options в объекте Selenium
Пример:.
В приведенном ниже примере показано, как активировать расширение для блокировки рекламы в браузере Chrome с помощью параметров Chrome и класса желаемых возможностей.
ChromeOptions options = new ChromeOptions(); options.addExtensions(new File("Path to CRX File")); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(ChromeOptions.CAPABILITY, options); ChromeDriver driver = new ChromeDriver(capabilities);
Извлечь CRX-файл:
Приведенные ниже шаги демонстрируют процесс извлечения CRX-файла через Ad Blocker с помощью сайта – http://crxextractor.com/.
Шаг 1. Перейдите на http://crxextractor.com/ и нажмите кнопку запуска.
Шаг 2. Введите в текстовое поле URL-адрес расширения Chrome – Ad Blocker. URL-адрес Adblock в интернет-магазине Chrome: https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom.
Затем нажмите кнопку OK.
Шаг 3. После щелчка на кнопке OK надпись на кнопке изменится на Get .CRX, как показано ниже. После клика по кнопке Get .CRX, будет загружен файл CRX, соответствующий расширению.
Шаг 4. Сохраните файл на локальном компьютере, запишите сохраненный путь. Следующий шаг — передать сохраненный путь в класс параметров Chrome.
Пример кода:
- Вы увидите рекламное объявление по адресу
http://demo.guru99.com/
, как показано ниже:
- При включенном расширении AdBlocker в браузере Chrome реклама должна быть отключена.
package adblock; import java.io.File; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; public class AdblockDemo { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver","X://chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addExtensions(new File("X://extension_3_40_1_0.crx")); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(ChromeOptions.CAPABILITY, options); options.merge(capabilities); ChromeDriver driver = new ChromeDriver(options); driver.get("http://demo.guru99.com/test/simple_context_menu.html"); driver.manage().window().maximize(); //driver.quit(); } }
Пояснение к коду:
- Изначально необходимо задать путь к файлу chromedriver.exe с помощью метода set property, поскольку для тестирования используется браузер Chrome.
- Вам необходимо указать путь к файлу CRX, чтобы добавить метод расширений.
- Затем вам нужно создать объект требуемых возможностей Chrome в классе Selenium и передать его экземпляру веб-драйвера. Начиная с версии Selenium 3.8.1, класс возможностей драйвера устарел. Необходимо объединить объект возможностей с объектом параметров Chrome, прежде чем передавать его в качестве аргумента конструктору драйвера Chrome
- Откройте URL-адрес – http://demo.guru99.com/test/simple_context_menu.html с включенным расширением Ad Blocker.
- Разверните и закройте браузер
Примечание: Мы включаем расширение AdBlocker в браузере Chrome с помощью скрипта автоматизации вместо того, чтобы делать это вручную. CRX-файл – это способ доступа к расширению AdBlocker с помощью скрипта автоматизации.
Вывод:
Браузер Chrome будет работать с включенным расширением AdBlocker, как показано ниже, без рекламы.
Параметры Chrome для режима инкогнито
В Chrome Options для режима инкогнито можно использовать предопределенный аргумент – incognito.
Ниже приведен пример кода для выполнения этой задачи.
Пример:
package test; import java.io.File; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; public class Incognito{ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.chrome.driver","X://chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("--incognito"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(ChromeOptions.CAPABILITY, options); options.merge(capabilities); ChromeDriver driver = new ChromeDriver(options); driver.get("http://demo.guru99.com/test/simple_context_menu.html"); driver.manage().window().maximize(); //driver.quit(); } }
Пояснение к коду:
- Изначально необходимо задать путь к файлу chromedriver.exe с помощью метода set property, поскольку для тестирования используется браузер Chrome.
- Затем необходимо создать объект класса Chrome Options и передать его экземпляру веб-драйвера. Поскольку мы хотим открывать браузер Chrome в режиме инкогнито, необходимо передать классу параметров Chrome аргумент incognito.
- Далее создаем объект класса Desired Capabilities и объединяем объект класса Desired Capabilities с объектом класса Chrome Options с помощью метода merge.
- Следующим шагом необходимо создать объект класса Chrome Driver и передать в качестве аргумента объект Chrome Options.
- Наконец, нам необходимо передать URL – http://demo.guru99.com/test/simple_context_menu.html методу driver.get
- Развернуть и закрыть браузер.
Вывод:
Окно браузера chrome будет открыто в режиме инкогнито, как показано ниже:
Опции Chrome для безголового браузера
Безголовый браузер работает в фоновом режиме. Вы не увидите ни графического интерфейса браузера, ни операций, выполняемых в нем.
Параметры запуска браузера Chrome в безголовом режиме могут быть реализованы с помощью предопределенных аргументов – headless.
Пример кода для выполнения этой задачи приведен ниже.
Пример:
package test; import java.io.File; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; public class HeadlessModeDemo { public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.chrome.driver","X://chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("--headless"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(ChromeOptions.CAPABILITY, options); options.merge(capabilities); ChromeDriver driver = new ChromeDriver(options); driver.get("http://demo.guru99.com/"); driver.manage().window().maximize(); String title = driver.getTitle(); System.out.println("Page Title: " +title); driver.quit(); } }
Пояснение к коду:
- Изначально необходимо задать путь к файлу chromedriver.exe с помощью метода set property, поскольку для тестирования используется браузер Chrome.
- Далее создаем объект класса Chrome Options и передаем его экземпляру веб-драйвера. Так как мы хотим открывать браузер Chrome в режиме headless, то в класс Chrome Options необходимо передать аргумент -headless.
- Затем создаем объект класса DesiredCapabilities Chrome и объединяем объект класса Desired Capabilities с объектом класса Chrome Options с помощью метода merge.
- Создаем объект класса Chrome Driver и передаем в качестве аргумента объект Chrome Options Selenium.
- Наконец, нам необходимо передать URL – http://demo.guru99.com/ методу driver.get.
- Вывести заголовок страницы и закрыть браузер.
Вывод
Браузер не будет виден для приведенного выше кода, поскольку Chrome будет работать в режиме Headless. Заголовок страницы будет извлечен и отображен следующим образом:
Выводы:
- Класс Selenium Chrome Options используется для манипулирования различными свойствами драйвера Chrome.
- Класс Desired Chrome Capabilities предоставляет набор пар ключ-значение для модификации отдельных свойств веб-драйвера, таких как имя браузера, его платформа и т.д.
- Для работы с любыми расширениями браузера Chrome необходимо извлечь CRX-файл, соответствующий расширению, и добавить его в класс Chrome Options.
- -incognito и -headless – предопределенные аргументы, предоставляемые классом Chrome Options для использования браузера Chrome в режиме инкогнито и безголовом режиме.
Перевод статьи «Chrome Options & Desired Capabilities in Selenium Webdriver».