Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4

RedDeveloper
15.03.2023 10:20
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4

Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы веб-браузеров. Selenium 4 - это последняя версия Selenium, поддерживающая протокол Chrome DevTools Protocol (CDP), который позволяет общаться и контролировать различные аспекты браузера, такие как сеть, безопасность, производительность и т.д.

Одной из функций CDP является перехват сетевых запросов и ответов, что может быть полезно для отладки, тестирования или анализа веб-приложений. Вы можете использовать CDP для перехвата сетевого трафика и создания файлов HAR (HTTP Archive), которые представляют собой файлы в формате JSON, содержащие подробную информацию о каждом запросе и ответе.

Краткое описание того, как работают наши утилиты har
Краткое описание того, как работают наши утилиты har

Однако прямое использование CDP может быть громоздким и сложным, поскольку необходимо написать много кода для обработки различных сценариев и событий. Поэтому некоторые разработчики создали утилиты или библиотеки, которые упрощают этот процесс и предоставляют абстракцию более высокого уровня.

Одной из таких утилит является selenium-har-util , которая является нашим проектом с открытым исходным кодом на GitHub. Эта утилита предназначена для работы с Selenium 4 на Java и поможет вам легко получать сетевые запросы и записывать файлы HAR.

В этой статье блога я покажу вам, как использовать selenium-har-util в вашем проекте Selenium 4 и создавать HAR-файлы для ваших тестов веб-автоматизации.

Предварительные условия

Чтобы использовать selenium-har-util, вам необходимо:

- Selenium 4, поддерживающий CDP

- ChromeDriver

- Google Chrome или любой другой браузер, поддерживающий CDP Session (пока не протестирован в Geckodriver или Safari)

- Java 8

- Maven

Установка

Чтобы установить selenium-har-util в качестве зависимости в ваш проект Maven, вам нужно добавить следующий репозиторий:

<repository>
  <id>jitpack.io</id>
  <url>https://jitpack.io</url>
</repository>

А затем добавьте следующую зависимость:

<dependency>
  <groupId>com.github.blibli-badak</groupId>
  <artifactId>selenium-har-util</artifactId>
  <version>1.0.2</version>
</dependency>

Если вы используете не Maven, а другой инструмент, вы можете проверить эту ссылку для получения дополнительных инструкций: https://jitpack.io/#blibli-badak/selenium-har-util

Использование

Чтобы использовать selenium-har-util в вашем коде, вам нужно выполнить следующие шаги:

1. Создайте экземпляр драйвера как обычно:

driver = new ChromeDriver(options);

2. Интегрируйте с сетевым слушателем, предоставляемым selenium-har-util:

NetworkListener networkListener = new NetworkListener(driver,”har.har”);

Первый аргумент - экземпляр вашего драйвера, второй аргумент - имя создаваемого HAR-файла.

3. Начните перехватывать сетевые запросы:

networkListener.start();

Это позволит включить сетевой домен в CDP и добавить слушателя для перехвата запросов.

4. Запустите свой тест автоматизации как обычно:

driver.get("https://example.com");
// do some actions on the web page

5. После завершения тестирования создайте файл HAR с помощью этого метода:

driver.quit();
networkListener.createHarFile();

Это запишет весь перехваченный сетевой трафик в JSON-файл с именем har.har (или любым другим именем, которое вы указали) в директории вашего проекта.

6. Откройте файл HAR с помощью вашей любимой программы просмотра HAR или просмотрите его через вкладку inspect element -> Network в вашем браузере.

Вы должны увидеть что-то вроде этого:

Вы должны увидеть что-то вроде этого

Заключение

В этой статье я показал, как использовать selenium-har-util для захвата сетевых запросов и создания файлов HAR с помощью Selenium 4 на Java. Эта утилита может помочь вам легче отлаживать, тестировать или анализировать веб-приложения, предоставляя подробную информацию о каждом запросе и ответе.

Надеюсь, вы нашли эту статью полезной и интересной. Если у вас есть вопросы или отзывы о selenium-har-util, не стесняйтесь оставить комментарий ниже, или свяжитесь с нами на нашей странице GitHub.

Счастливого тестирования!

GitHub - blibli-badak/selenium-har-util

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.