A
A
Artem Seleznev2017-01-13 14:17:12
Python
Artem Seleznev, 2017-01-13 14:17:12

How to send data to a JS form and get an AJAX response using Python + Selenium?

Hello.
Please tell me how to send data to the site using Python + Selenium and get an AJAX response.
At the moment, I reach the point that I receive data from the drop-down list:

driver.find_element_by_class_name("form-control").text

but how to send data? What should be used?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
Александр Момот, 2017-01-13
@AlexMt

То что Вы делаете называется submit, но приходит обратно не document, а AJAX-ответ, ведь страница не перезагружается, как я понимаю?
Когда Вы пытаетесь отправить данные через браузер, при этом управляя им через selenium, то Вы можете только работать с UI (пользовательский слой), а не с текстовыми данными (ну, не совсем так, но в целом - да) которые прилетают к Вам от сервера. Selenium не позволяет видеть статусы ответов на все запросы кроме первого (главного - первого запроса к документу). Но при этом, вы всё равно не сможете увидеть ответный json/xml/plain-text/whatever
Один из вариантов - ставить прокси на пути селениум-браузер и ходить через него, потом собирая из этого прокси ответы, разбивать их/отсекать ненужные и используя json.loads() получать dict в котором и будут находится данные для валидации
Иными словами, "отправить данные сайту" как Вы сказали, используя только selenium + браузер кроме как нажатием на кнопку в форме - нельзя.
Как один из вариантов, использовать HTTP-библиотеку для отправки запросов http. Например, очень хороший вариант - requests

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question