2009-10-10 10 views
5

Używam mechanize (która używa clientform) do pewnego przeszukiwania sieci w pythonie, a ponieważ nie obsługuje JS, chcę ustawić wartość nieistniejących danych wejściowych w formularzu (dane wejściowe są generowane przez JS). Jak mogę to zrobić?Jak ustawić nieistniejące pole w ClientForm Pythona?

Błąd jest podobny do nich można uzyskać, jeśli starają się wykonać

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

Odpowiedz

16

trzeba najpierw dodać formant do formularza, a następnie fixup formularza.

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

To naprawdę nie jest bardzo dobrze udokumentowane, a w źródle mocy fixup() znajduje się komentarz:

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

jednak nie wygląda to nic nie robi zbyt niebezpieczne. Prawdopodobnie przynajmniej najpierw dodaj kontrolę, zanim zaczniesz mieszać z czymkolwiek innym w formularzu.

+0

Dzięki, działa jak urok – Fluffy

Powiązane problemy