Browsermob proxy + Java + WebDriver помогите запустить простейший тест

browsermob-proxy
java
webdriver
Теги: #<Tag:0x00007fedc01a63b8> #<Tag:0x00007fedc01a60e8> #<Tag:0x00007fedc01a5fa8>

(Александр Р) #1

Мучаемся вторую неделю, запуск простейшего теста с browsermob и получаение har архивад для просмотра ни как не удаётся.

Нужна помощь java знатока сталкивающегося с browsermobProxy , желательно рабочий пример тесты либо еще как-то. Всё чтоесть в сети. валится по разным причинам и исправить их ни как не удаётся.


Можно ли вытащить лог вкладки "Network" из консоли браузера
Как задизейблить интернет коннекшен во время теста?
(Александр Таранков) #2

http://internetka.in.ua/browsermobproxy-selenium-perfomance/


(Sergey Korol) #3

Для случая с удаленным запуском уже давал ответ здесь.


(Jane Tymoschuk) #4

Запуск прокси

 protected static void initProxy() {
        try {
            ServerSocket socket = new ServerSocket(0);
            localProxyPort.set(socket.getLocalPort());
            socket.close();
        } catch (IOException e) {/**/}
        ProxyServer server = new ProxyServer(localProxyPort.get());
        try {
            server.start();
            server.setCaptureContent(true);
            server.setCaptureHeaders(true);
            server.newHar("test");
        } catch (Exception e) {/**/}
        proxyServer.set(server);
    }

инициализация драйвера

DesiredCapabilities capabilities = null;
Proxy proxy = new Proxy();
String m_proxy = <host>+ ":" + <port>;
proxy.setHttpProxy(m_proxy).setFtpProxy(m_proxy);
capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(CapabilityType.PROXY, proxy);
new ChromeDriver(capabilities);

я делала так, работает


(Funker) #5

Хочу уточнить, а зачем server socket поднимать и тушить сразу? Для чего он здесь вообще?


(Jane Tymoschuk) #6

я так нахожу свободный порт для прокси сервера


(Taras) #7

по ходу с драйвером версии више 2.39 браузер моб не работает.


(Dmitry Cheremushkin) #8

Видео от Алексея Баранцева по BrowserMob Proxy + примеры на GitHub:
http://habrahabr.ru/post/209752/


(asolntsev) #9

Привет!
Ну как, удалось запустить browsermob proxy?

Я на днях столкнулся с такой же проблемой. Покопавшись пару часов в исходниках, обнаружил, что BrowserMob Proxy игнорирует все запросы, начинающиеся на "http://localhost". А я как раз всегда свои тесты запускаю именно на "http://localhost:8080", поэтому он мои запросы вчистую игнорировал.


(heartwilltell) #10

Собственно хотел узнать как обстоят дела с Browsermob? Последняя версия вышло достаточно давно. Как работает с последними версиями селениум?


(asolntsev) #11

Работает.
У меня есть тест, который проверяет взаимодействие последнего BrowserMobProxy с последним Selenium. Запускается регулярно. Проблем нет.


(asolntsev) #13

Похоже, я наврал.
BrowserMob Proxy не работает с последними версиями Selenium. Похоже, давно.
Кто-нибудь что-нибудь смог с этим сделать?


(Sergey Korol) #14

А вы новые версии BMP пробовали? Разработчики начали активно рефакторить древний code base. Последнюю версию попробовал с selenium 2.48.2 - работает.


(asolntsev) #15

Я пробовал - у меня не работает.
Дело в том, что browsermob-proxy использует очень старую версию Jetty (7.6.16.v20140903), а я в проекте хочу использовать гораздо более новую. А с новой версией Jetty browsermob-proxy не запускается. Я даже попробовал форкнуть и обновить - не получается, там слишком много изменений выходит.


(Vasiliy Rakshin) #16

У меня 24 селенид с BMP 2.1.0-beta-3 запустился, правда там они разделили проект, и плавно переезжают на другую прокси -
<artifactId>browsermob-core-littleproxy</artifactId>

BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.start(0);

правда там ещё не всё перенесено https://github.com/lightbody/browsermob-proxy/blob/master/new-interface-compatibility.md.


(Sergey Korol) #17

@asolntsev ведь написал, что проблема в старой версии Jetty. Дело не в Selenide (ему то Jetty не нужен), а в том, что у них наверняка код автотестов лежит вместе с основным кодом приложения. Т.е. если где-то в проекте нужна более свежая версия Jetty, тут уже возникает конфликт.


(asolntsev) #18

Так точно.
На самом деле jetty я хочу запускать из тестов самой Selenide - в первую очередь чтобы протестировать методы upload/download. Конечно, можно было бы задауншифтиться на старую jetty, но блин, в 21 веке же живём. :frowning:


(Vasiliy Rakshin) #19

Так и я о том, что БМП можно использовать без джетти, с литтлепрокси.


(Sergey Korol) #20

У littleproxy внутри dependency на jetty. К тому же, в BMP вшита еще и не самая свежая версия, где jetty еще 7.6.16.v20140903, как написали выше.


(asolntsev) #21

Да, BMP вроде как можно использовать без джетти. LittleProxy вроде как использует Netty.
Но в этом варианте у меня не получилось интерсептить ответы сервера. Вот не заходит LittleProxy в метод serverToProxyResponse(), как я ни бился.