Использование Remote BrowserMob Proxy + HAR Storage

Продолжая тему прокси серверов и их роли в автоматизации тестирования веб-приложений, хотелось бы поделиться примером использования Remote BrowserMob Proxy (далее BMP) в связке с HAR Storage.

В случае внедрения масштабирования, нередко существует необходимость организации доступа к удаленному прокси. На уровне драйвера этот момент решается довольно просто при помощи установки соответствующих DesiredCapabilities. Но как, при этом, настроить отправку команд прокси серверу, физически расположенному на другой VM? Разработчики BMP не поскупились на REST API, посему, никто не мешает нам написать простенький REST клиент для общения с удаленным прокси. Для этих целей был использован Jersey client, предоставляющий достаточно гибкий и удобный интерфейс. К примеру, следующим запросом мы сможем получить HAR файл в виде строки:

public String getHarAsString() {
    return service.path(Integer.toString(port))
            .path("har")
            .request()
            .get(Response.class)
            .readEntity(String.class);
}

Все бы ничего, но как теперь воспользоваться полученной информацией? Допустим, у нас экзекьютятся сотни тестов. На каждый из них мы получим некий json в виде строки или файла. Как нам теперь анализировать всю эту информацию? Каким образом можно вести статистику по N прогонам? Тут нам на помощь приходит HAR Storage. Конечно, придется потратить некоторое время на его установку, но профит даст о себе знать практически сразу.

Сам storage содержит рычаг, позволяющий поместить в него HAR файл. Выглядит это следующим образом:

public String save(final String data) {
    final Form form = new Form().param("file", data);

    return service.path("upload")
            .request(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
            .header("Automated", "true")
            .post(Entity.form(form))
            .readEntity(String.class);
}

Где data - та самая строка / HAR / json, которую мы ранее получили от BMP.

  • Проект залит в местный GitHub.
  • В pom.xml уже зашит плагин для создания jar.
  • Для удобства был рассмотрен чисто символический Selenium тест.
  • Конфигурация прокси и стореджа зашита в раннер.
  • Грид не подключался для разгрузки проекта. Процесс конфигурации и так займет некоторое время.
  • Для успешного запуска вам для начала придется поднять BMP и HAR Storage. Для этого можно воспользоваться подсказками из оригинальной статьи в моем блоге.

Если все было сделано верно, то после нескольких запусков вы сможете наблюдать приблизительно такую картину в вашем хранилище:

Посмотреть проект на at.info мега складе примеров at.info-knowledge-base/functional test automation/webdriver/remote proxy and har storage on java at master · atinfo/at.info-knowledge-base · GitHub

5 лайков

кто то пробовал ето в паре с новой версией вебдрайвера више 2.42 ??? У меня не работает, раньше все работало…