Мне от сайта приходит токен авторизации одной строкой в теле http-респонса. Могу ли я его как-то получить силами веб-драйвера, или мне надо городить прокси сервер и искать токен посреди всех http-запросов?
Не знаю то же самое, что и у меня, но я мог достать из кукисов похожий токен в своей аппликации. Он там появлялся после авторизации. А куки я доставал из Драйвера, у него есть метод, позволяющий вытаскивать их.
WebDriver может сохранить кукис, а потом подгружать их с последующими запросами
на лету надо
в браузер приходит респонс, и мне надо из него строку вытащить
Без прокси сервера не обойтись, вебдрайвер не умеет перехватывать сетевой трафик браузера.
Рекомендую к ознакомлению:
ну я так и думал
Можно, если ваша страница, например логина, уже загружена и запросы отправляються через ajax. Я уже писал здесь:
Если тестируете Джавой на Хроме то можно и без прокси: http://chromedriver.chromium.org/logging/performance-log
Есть несколько вариантов:
- browser mob proxy
- Performance logs, но обычно авторизация идёт через post, поэтому вариант не подойдёт, так при post response body не прочитать. Но так как токен авторизации есть в hesders, то можно достать оттуда
- Puppeteer
- Cypress
- Получить куку
Если еще актуально.
WebDriver нормально работает с Cookie.
По вашему вопросу - Selenium. Get Cookies and decode JWT tokens in Java | Lenar.io
Должно помочь. Правда на английском
А для нативного мобайла (не браузер) Android\iOS кто-то решал подобные задачи? Сколько не гуглил, но так и не нашел инфы что кто-то смог Browsermob с Аппиумом подружить
Всем привет. Скажу свою точку зрения после всего сказанного, возможно она все упростит…
- На счет BrowserMobProxy - давно и немного устаревший способ перехвата… Используется больше в очень узких целях для перфоманса… Думаю сейчас на много больше более годных инструментов… Во первых его трудно подключать, скорость падает и прочие минусы + логи, которые перехватываются, нужно как-то парсить, поэтому это вообще не вариант…
- На счет вебрайвера, и его возможностей, - если токен не пробрасывается в кукисах, то другого варианта нет… Смотреть в логи вебрайвера сервера и какие там запросы идут - тоже пустая трата времени…
- Единственный самый годный способ - подключить restassure, или okhttp, или retrofit или любую другую библиотеку для тестирования rest api, слать запрос и разбирать ответ, потом в селениуме при старте сессии что нужно пробрасывать -кукисы, Id сессии и что угодно
у меня все решилось административно:
фронтендерам спустили сверху задачу помочь мне в тестах, потому прокси не надо, корректируем поведение фронта скриптами
Слишком сложно. Я бы делал запрос через какую то библиотеку для работы c HTTP.