Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Как сохранить http реквест или осуществить поиск по нему с использованием webdriver + python?

webdriver
testng
python
selenium
Теги: #<Tag:0x00007fedb72439c8> #<Tag:0x00007fedb7243810> #<Tag:0x00007fedb72435b8> #<Tag:0x00007fedb72433d8>

#1

Всем привет!
Помогите, плз, решить следющий вопрос.
У меня с виджета методом post отправляется лид в формате json, мне нужно каким-то образом сохранить lead_id, который нахрдится в теле реквест запроса, для поиска этого лида по айди в админке.
Есть ли у силениум вебрайвера какие-то инструменты поиска по реквест запросу или сохранения\захвата их в любом удобоваримом виде?
Спасибо за внимание.


(Yury) #2

Средствами webdriver никак. Разработчики дяли понять, что не будут внедрять такой функционал:

Используйте сторонние библиотеки, например, requests.


#3

Спасибо.
Возможно есть другие средства?


(Yury) #4

http://docs.python-requests.org


(rmerkushin) #5

#6

Спасибо за ответ.
Почитал про эти библиотеки, нашел, как отправлять реквест, получать респонс, передавать через вебдрайвер джейсон, но как записать реквест, отправляемый по клику на кнопку “отправить” с сгенерированным айдишником - не нашел :frowning:


(rmerkushin) #7

Посмотрите это, если я правильно вас понял:


(Дмитрий Мирошник) #8

Самый простой вариант - через browser tools, если реквест надо записать разово и использовать впоследствии.
Если же надо параметры ловить автоматизированно - то ставьте proxy любого вида и работайте с ним.


#9

@Defender Амбициозная цель - именно ловить автоматизировано. У меня на фронте генерится айдишник, под которым заявка сохраняется в базу и соответсвенно доступна для просмотра в админке, где с ней происходят определенные манипуляции.
И я пока не придумал ничего лучше, чем каким-то образом сохранять этот сгенереный на фронте лид_айди, чтоб по нему потом искать в админке заявку.

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


(ex3me0) #10

Этот ID доступен в hidden элементе на странице? Если так - что мешает выдрать attr-value прямо из вебэлемента?


#11

нет, он не фигурирует нигде на странице, генерится JS и отправляется методом fetch


(Kyrylo Havrylenko) #12

Если коротко - вам нужно добавить прокси и логировать трафик там.

Можно это сделать через devtools (на github есть несколько проектов, которые позволяют в качестве прокси рядом с вебдрайвером подключить еще тулзы, официально в Хромдрайвере этого нет, а если нужно на наборе браузеров, то плохая идея). Можно через browsermob. Если на стороне куда летят реквесты есть защита от проксирования, то browsermob не подойдет. Решал недавно подобную проблему, вот здесь расписал решение.


(ex3me0) #13

Я не противник каких-то либо mitm прокси, но часто - это может оказаться оверхедом.
Одно дело, когда надо посмотреть на правильный ли эндпойнт идет запрос и какой у него ответ, другое дело - данные этого самого запроса, которые шлет клиент.
Я это к чему: если клиент пересылает данные - значит они у него есть (тут можно вставить копирайт на киевского мэра, но я не стану)
Предлагаю пойти по пути наименьшего сопротивления, и разобраться: как получается id-шка, где находится, и как ее можно получить с вебморды, возможно привлечь дев-тим к этому мероприятию.

Ну а если попытки не увенчались успехом - вешать проксю уже, и теоретически обретать гемор с CORS-хедерами, https, etc.
Если честно - не припомню ни одного случая, когда не удалось бы выдрать клиентские данные из веб-морды. Но мои случаи - не ваши, да и черт знает что там у вас за приложение такое хЫтрое =)


#14

Я так и не нашел способа выдрать откуда-то эту информацию и пришел к выводу, что этого делать и не стоит, а проще будет закончить кейс проверкой адреса отправки, в этом мне оч пригодился browsermob. На апи и админку я просто напишу отдельные кейсы.

Всем спасибо за ответы)


(rmerkushin) #15

нашел еще прикольную связку selenium + requests https://github.com/tryolabs/requestium