views:

114

answers:

5

Is it possible to control a web browser like Firefox using Python?

I would want to do things like

  • launch the browser
  • force clicks on URLs
  • take screenshots

etc.

+3  A: 

Selenium Remote Control is a project that comes very close to what you are after. I don't know if you can force it to take screenshots, I'm fairly certain that is behaviour controlled by a window manager.

Tim McNamara
+1  A: 

wxWebConnect is a wxWidgets library for controlling Gecko (Mozilla's rendering engine). Together with wxPython, it would allow you to write your own (minimal) web browser in Python, and hence control clicks.

katrielalex
A: 

Depends what do you actually want to achieve. If you need to do some automatic stuff w/out user interference, you can just use underlying engine of the browser, like Gecko or WebKit, w/out loading browser itself. There are ready Python bindings to these engines available.

Browsers themself do not provide this kind of API to outside processes. For Firefox, you would need to inject some browser-side code into chrome, either as extension or plugin.

Daniel Kluev
A: 

Ag great way to control a browser in Python is to use PyQt4.QtWebKit.

Guillaume Lebourgeois
+1  A: 

If you need to take screenshots, then you need to render the pages. I would recommend to use Selenium (as mentioned by Tim), or then spynner.

Here is a sample code of what you need using spynner:

import spynner

browser = spynner.Browser()
browser.load("http://stackoverflow.com/questions/3369073/controlling-browser-using-python")
browser.snapshot().save('file.png')
browser.close()
monstru0