Для случая с удаленным запуском уже давал ответ здесь.
Запуск прокси
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);
я делала так, работает
Хочу уточнить, а зачем server socket поднимать и тушить сразу? Для чего он здесь вообще?
я так нахожу свободный порт для прокси сервера
по ходу с драйвером версии више 2.39 браузер моб не работает.
Видео от Алексея Баранцева по BrowserMob Proxy + примеры на GitHub:
Привет!
Ну как, удалось запустить browsermob proxy?
Я на днях столкнулся с такой же проблемой. Покопавшись пару часов в исходниках, обнаружил, что BrowserMob Proxy игнорирует все запросы, начинающиеся на “http://localhost”. А я как раз всегда свои тесты запускаю именно на “http://localhost:8080”, поэтому он мои запросы вчистую игнорировал.
Собственно хотел узнать как обстоят дела с Browsermob? Последняя версия вышло достаточно давно. Как работает с последними версиями селениум?
Работает.
У меня есть тест, который проверяет взаимодействие последнего BrowserMobProxy с последним Selenium. Запускается регулярно. Проблем нет.
Похоже, я наврал.
BrowserMob Proxy не работает с последними версиями Selenium. Похоже, давно.
Кто-нибудь что-нибудь смог с этим сделать?
А вы новые версии BMP пробовали? Разработчики начали активно рефакторить древний code base. Последнюю версию попробовал с selenium 2.48.2 - работает.
Я пробовал - у меня не работает.
Дело в том, что browsermob-proxy использует очень старую версию Jetty (7.6.16.v20140903), а я в проекте хочу использовать гораздо более новую. А с новой версией Jetty browsermob-proxy не запускается. Я даже попробовал форкнуть и обновить - не получается, там слишком много изменений выходит.
У меня 24 селенид с BMP 2.1.0-beta-3 запустился, правда там они разделили проект, и плавно переезжают на другую прокси -
<artifactId>browsermob-core-littleproxy</artifactId>
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.start(0);
правда там ещё не всё перенесено browsermob-proxy/new-interface-compatibility.md at master · lightbody/browsermob-proxy · GitHub.
@asolntsev ведь написал, что проблема в старой версии Jetty. Дело не в Selenide (ему то Jetty не нужен), а в том, что у них наверняка код автотестов лежит вместе с основным кодом приложения. Т.е. если где-то в проекте нужна более свежая версия Jetty, тут уже возникает конфликт.
Так точно.
На самом деле jetty я хочу запускать из тестов самой Selenide - в первую очередь чтобы протестировать методы upload/download. Конечно, можно было бы задауншифтиться на старую jetty, но блин, в 21 веке же живём.
Так и я о том, что БМП можно использовать без джетти, с литтлепрокси.
У littleproxy внутри dependency на jetty. К тому же, в BMP вшита еще и не самая свежая версия, где jetty еще 7.6.16.v20140903, как написали выше.
Да, BMP вроде как можно использовать без джетти. LittleProxy вроде как использует Netty.
Но в этом варианте у меня не получилось интерсептить ответы сервера. Вот не заходит LittleProxy в метод serverToProxyResponse(), как я ни бился.
У меня сейчас как раз работет сценарий с получением har и просмотром, какие уходят запросы. работаю как раз с последней версей little proxy.
Еще есть тесты, где перехватываются запросы и подменяются. Тоже с помощью прокси.
Если что - по конкретным вопросам могу дать примеры.
О, да, очень нужны примеры.
Достаточно самый простой: перехватывать и логировать все запросы и ответы.