@seleznev_artem_info
https://github.com/NameArtem

Как послать данные в форму JS и получить ответ на AJAX при помощи Python + Selenium?

Здравствуйте.
Скажите пожалуйста, как с помощью Python + Selenium отправить данные сайту и получить AJAX ответ.
На данный момент дохожу до того, что получаю данные из выпадающего списка:
driver.find_element_by_class_name("form-control").text

но как отправлять данные? Что надо использовать?
  • Вопрос задан
  • 871 просмотр
Пригласить эксперта
Ответы на вопрос 1
@AlexMt
Automation Q&A Lead
То что Вы делаете называется submit, но приходит обратно не document, а AJAX-ответ, ведь страница не перезагружается, как я понимаю?
Когда Вы пытаетесь отправить данные через браузер, при этом управляя им через selenium, то Вы можете только работать с UI (пользовательский слой), а не с текстовыми данными (ну, не совсем так, но в целом - да) которые прилетают к Вам от сервера. Selenium не позволяет видеть статусы ответов на все запросы кроме первого (главного - первого запроса к документу). Но при этом, вы всё равно не сможете увидеть ответный json/xml/plain-text/whatever

Один из вариантов - ставить прокси на пути селениум-браузер и ходить через него, потом собирая из этого прокси ответы, разбивать их/отсекать ненужные и используя json.loads() получать dict в котором и будут находится данные для валидации

Иными словами, "отправить данные сайту" как Вы сказали, используя только selenium + браузер кроме как нажатием на кнопку в форме - нельзя.

Как один из вариантов, использовать HTTP-библиотеку для отправки запросов http. Например, очень хороший вариант - requests
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы