views:

954

answers:

2

When I run the following script:

from mechanize import Browser
br = Browser()
br.open(url)
br.select_form(name="edit_form")
br['file'] = 'file.txt'
br.submit()

I get: ValueError: value attribute is readonly

And I still get the same error when I add:

br.form.set_all_readonly(False)

So, how can I use Python Mechanize to interact with a HTML form to upload a file?

Richard

+1  A: 

twill is built on mechanize and makes scripting web forms a breeze. See python-www-macro.

>>> from twill import commands
>>> print commands.formfile.__doc__

>> formfile <form> <field> <filename> [ <content_type> ]

Upload a file via an "upload file" form field.

>>>
gimel
+3  A: 

This is how to do it properly with Mechanize:

br.form.add_file(open(filename), 'text/plain', filename)
Plumo