I'm using mechanize (which uses clientform) for some web crawling in python and since it doesn't support JS, I want to set a value of an unexistent input in a form (the input is generated by JS). How can I do this?
The error is similar to the one you get if you try to execute
from mechanize import Browser
br = Browser()
page = br.open('http://google.com')
br.select_form(nr = 0)
br['unexistent'] = 'hello'
You need to first add the control to the form, and then fixup
the form.
br.form.new_control('text','unexistent',{'value':''})
br.form.fixup()
br['unexistent'] = 'hello'
This really isn't very well documented, and in the source under fixup()
there is the comment:
This method should only be called once, after all controls have been
added to the form.
However, it doesn't look like it does anything too dangerous. Probably at least add the control first before messing with anything else in the form.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With