Как установить несуществующее поле в Python ClientForm? - PullRequest
5 голосов
/ 11 октября 2009

Я использую mechanize (который использует clientform) для некоторого веб-сканирования в python, и, поскольку он не поддерживает JS, я хочу установить значение несуществующего ввода в форме (вход генерируется JS). Как я могу это сделать?

Ошибка похожа на ту, которую вы получите, если попытаетесь выполнить

from mechanize import Browser
br = Browser()
page = br.open('http://google.com')
br.select_form(nr = 0)
br['unexistent'] = 'hello'

1 Ответ

17 голосов
/ 11 октября 2009

Сначала необходимо добавить элемент управления в форму, а затем fixup форму.

br.form.new_control('text','unexistent',{'value':''})
br.form.fixup()
br['unexistent'] = 'hello'

Это действительно не очень хорошо задокументировано, и в источнике под fixup() есть комментарий:

This method should only be called once, after all controls have been
added to the form.

Однако не похоже, что он делает что-то слишком опасное. Возможно, по крайней мере сначала добавьте элемент управления, прежде чем связываться с чем-либо еще в форме.

...