В этом учебном пособии вы узнаете:
- Что такое класс параметров 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/ и нажмите кнопку запуска.
![Стартовая страница сайта https://crxextractor.com/](https://qarocks.ru/wp-content/uploads/2023/10/030119_1213_chromeoptio1.webp)
Шаг 2. Введите в текстовое поле URL-адрес расширения Chrome – Ad Blocker. URL-адрес Adblock в интернет-магазине Chrome: https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom.
Затем нажмите кнопку OK.
![Ввод в текстовое поле URL-адреса расширения Chrome - Ad Blocker](https://qarocks.ru/wp-content/uploads/2023/10/030119_1213_chromeoptio2.webp)
Шаг 3. После щелчка на кнопке OK надпись на кнопке изменится на Get .CRX, как показано ниже. После клика по кнопке Get .CRX, будет загружен файл CRX, соответствующий расширению.
![Загрузка файла CRX, соответствующего расширению](https://qarocks.ru/wp-content/uploads/2023/10/030119_1213_chromeoptio3-1024x514.webp)
Шаг 4. Сохраните файл на локальном компьютере, запишите сохраненный путь. Следующий шаг — передать сохраненный путь в класс параметров Chrome.
Пример кода:
- Вы увидите рекламное объявление по адресу
http://demo.guru99.com/
, как показано ниже:
![Рекламное объявление по адресу http://demo.guru99.com/](https://qarocks.ru/wp-content/uploads/2023/10/030119_1213_chromeoptio4-1024x153.webp)
- При включенном расширении 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 с включенным расширением AdBlocker](https://qarocks.ru/wp-content/uploads/2023/10/030119_1213_chromeoptio5.webp)
Параметры 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 в режиме инкогнито](https://qarocks.ru/wp-content/uploads/2023/10/030119_1213_chromeoptio6.webp)
Опции 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. Заголовок страницы будет извлечен и отображен следующим образом:
![Работа браузера Chrome в режиме Headless](https://qarocks.ru/wp-content/uploads/2023/10/030119_1213_chromeoptio7.webp)
Выводы:
- Класс Selenium Chrome Options используется для манипулирования различными свойствами драйвера Chrome.
- Класс Desired Chrome Capabilities предоставляет набор пар ключ-значение для модификации отдельных свойств веб-драйвера, таких как имя браузера, его платформа и т.д.
- Для работы с любыми расширениями браузера Chrome необходимо извлечь CRX-файл, соответствующий расширению, и добавить его в класс Chrome Options.
- -incognito и -headless – предопределенные аргументы, предоставляемые классом Chrome Options для использования браузера Chrome в режиме инкогнито и безголовом режиме.
Перевод статьи «Chrome Options & Desired Capabilities in Selenium Webdriver».