t.me/atinfo_chat Telegram группа по автоматизации тестирования

BrowserMob Proxy взять полностью всё тело.

Теги: #<Tag:0x00007f74878fc4a8> #<Tag:0x00007f74878fc3b8>

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

Посмотрите это:

browserMobProxyInstance.getHar().getServer().getHar().getLog().getEntries().stream().filter(some filter Predicate for example).findFirst().get(). … и тут Вам будет вся АРІ для getRequest, getResponse и все что угодно

скорее это ответ на мой вопрос - https://github.com/lightbody/browsermob-proxy#http-request-manipulation
нужно настроить фильтры - addRequestFilter, addResponseFilter
на данном этапе можно редактировать запросы и ответы.

ви можете начать писать вес трафик HAR архив и в конце теста извлечь его, так как я показал више

да, но я хочу ловить/редактировать/ и слать дальше сообщения на сервер и с него. так что har мне не до конца подходит, но спасибо за помощь

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

 public static void regDelayFor(String apiSign, long delayInMs) {

        ResponseFilter filter = (response, contents, messageInfo) -> {
            if (messageInfo.getOriginalUrl().contains(apiSign)) {
                try {
                    Thread.sleep(delayInMs);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        };

        ProxyFactory.get().addFirstHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter, 16777216));
    }

а так складывали ответы в Мапу для прикладывания потом в логи (систем аут для отладки)

public static void regCatcherFor(String apiSign) {
        ResponseFilter filter = (response, contents, messageInfo) -> {
            System.out.println("filter url " + messageInfo.getOriginalUrl());
            System.out.println("filter url " + messageInfo.getOriginalUrl().contains(apiSign));
            if (messageInfo.getOriginalUrl().contains(apiSign)) {
                System.out.println("regCatcherFor " + contents.getTextContents());
                responseMap.put(apiSign, contents.getTextContents());
                System.out.println(id);

            }
        };
        ProxyFactory.get().addFirstHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter, 16777216));
    }

Таким образом можно передать и JSON внутрь на какой ты хочешь подменить ответ.

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

спасибо, но вопрос уже давно не актуален, и данный способ уже давно юзается.

Если семь дней для Вас уже “давно”, могу предположить, что Вы уже построили космический корабль.

ну как сказать, построил систему подмены нужных параметров на запрос и ответ от сервера, + ещё пару фичей + переписал фрейворк , то как уже собралось много костылей и нужно было более стабильную версию.
(P/S, я дев.)