Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I simulate onclick event in python? [closed]

I am working on a small project where I have to submit a form to a website. The website is, however, using onclick event to submit the form (using javascript).

  1. How can the onclick event be simulated in python?

  2. Which modules can be used? I have heard about selenium and mechanize modules. But, which module can be used or in case of both, which one is better?

I am new to web scraping and automation.So,it would be very helpful.

Thanks in advance.

like image 490
skshetry Avatar asked Jul 11 '16 02:07

skshetry


2 Answers

Ideally you don't even need to clicks buttons in these kind of cases.

All you need is to see at what webservice does the form sends request when clicked on submit button.

For that open your developer's control in the browser, Go to the Network tab and select 'preserve log'. Now submit the form manually and look for the first xhr GET/POST request sent. It would be POST request 90% of times.

Now when you select that request in the request parameters it would show the values that you entered while submitting the form. Bingo!!

Now all you need to do is mimic this request with relevant request headers and parameters in your python code using requests. And Wooshh!!

Hope it helps..

like image 85
Utkarsh Kaushik Avatar answered Sep 23 '22 19:09

Utkarsh Kaushik


There is no silver bullet in simulating onclick events on a web page. It is pretty much use-case specific, but here are some points and guidelines.

In general, there are two approaches:

  • use browser developer tools, open the network tab, make the click and see what request is being sent to the server. Then, simulate this request in Python, with, for example, requests.
  • use selenium which would fire up a real browser where you would find the specific element and click via .click() method

mechanize would not execute/trigger the onclick function, because executing onclick requires executing javascript which mechanize cannot do.

like image 45
alecxe Avatar answered Sep 21 '22 19:09

alecxe