Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Thucydides and Browsermob Proxy

har
browsermob-proxy
maven
Теги: #<Tag:0x00007f7b642b8978> #<Tag:0x00007f7b642b8838> #<Tag:0x00007f7b642b86f8>

(heartwilltell) #1

У кого был опыт использования данного чуда и фукудита в связке. Дайте пример кода, где вы запускаете прокси, открываете страничку, получаете HAR файл. Я что-то никак не могу понять как его запустить.


Browsermob proxy + Java + WebDriver помогите запустить простейший тест
(Sergey Korol) #2

Тут не имеет значения, какой фреймворк вы используете. Будь то Thucydides или что-то самописное, вам понадобится какой-нибудь простенький клиент для отправки запросов BrowserMobProxy серверу. В свое время я взял вот этот. Правда потом пришлось его переписать под Jersey 2.7 из-за конфликта версий с другим компонентом. Но даже этот вариант поможет вам связаться с BrowserMobProxy из вашего проекта.

На стороне фреймворка вам придется лишь засетить драйверу capability с соответствующей проксей.

Помимо всего прочего, вам еще нужно подумать, как и где хранить ваши HAR файлы. Очень советую посмотреть в сторону HarStorage. Очень серьезное дополнение к BrowserMobProxy.

Пробуйте пока так. Если возникнут проблемы, поделюсь кусками кода.


(GorDi) #3

Всем доброго времени суток! :smile:
Появилась необходимость использовать thucydides + browsermobproxy.
Довольно долгие изыскания всяческих доков и попытки “подружить” thucydides с browsermobproxy привели к следующему решению:

<dependency>
        <groupId>net.thucydides</groupId>
        <artifactId>thucydides-browsermob-plugin</artifactId>
        <version>0.9.275</version>
        <exclusions>
            <exclusion>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
            </exclusion>
            </exclusions>
    </dependency>

Идею почерпнул здесь

Почему через плагин? Прямое подключение в “dependency” browsermobproxy приводило к крашу проекта (постоянный конфликт slf4j-log4j12. Пытался вручную его исправить (с помощью UML диаграммы зависимостей, которую строит JIDEA), но дальше последовала целая очередь конфликтов, так что от етого способа пришлось отказаться.

После применения вышеуказанного способа подключения (через плагин) получилась следующая ситуация: при запуске отдельного теста (в котором даже не подключены библиотеки browsermobproxy, естественно и сервер не запущен) все равно происходит запуск прокси и отработка теста через него. “Кто” и “что” запускает прокси сервер и заставляет тест его использовать для меня осталось не понятным. Как только из pom.xml удаляется “dependency” в которой произведено подключения browsermobproxy - плагина, все встает на свои места.

Подскажите пожалуйста, что может являться причиной такого поведения фреймворка?


(heartwilltell) #4

Причиной является очень сложный и запутанный код фреймворка :laughing:
Нужно дебажить, так сходу в фукудите никто ничего не скажет.


(GorDi) #5

Спасибо за ответ, я уже переживал что сам что-то накриворучил.

Фантастика… Лично у меня (хотя я тесно с сусиком работаю буквально месяц) сложилось впечатление, что чем меньшн к нему “прикручиваешь” доп фишек, тем лучше и дольше он живет. Тип шо есть “в коробке” то и юзайте… Хотя, ет может быть субьективное мнение, ошибочно сформированное из-за недостатка опыта…

Пока выкрутился тем, что вынес тесты, которые юзают прокси, в новый проект.


(heartwilltell) #6

На форуме уже не раз обсуждалась эта тема. Фреймворк хороший, если не выходить за рамки коробочного функционала. Я жил на нем пол года, в итоге мигрировал на самописное решение, в котором много чего позаимствовал у Selenide.

Сори за офтоп.