Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Mechanize select a form with no name

I am attempting to have mechanize select a form from a page, but the form in question has no "name" attribute in the html. What should I do? when I try to use

br.select_form(name = "")

I get errors that no form is declared with that name, and the function requires a name input. There is only one form on the page, is there some other way I can select that form?

like image 974
Mantas Vidutis Avatar asked Apr 06 '10 04:04

Mantas Vidutis


2 Answers

Try:

br.select_form(nr=0)

to select the first form

In Mechanize source,

def select_form(self, name=None, predicate=None, <b>nr=None</b>):
    """
    ...
    nr, if supplied, is the sequence number of the form (where 0 is the
    first).
    """
like image 122
YOU Avatar answered Nov 18 '22 14:11

YOU


If you want to execute code for multiple forms no matter what their name is, you can loop over every form letting your script knowing which form will work next.

currentForm = 0
for form in br.forms(): # Iterate over the forms
        br.select_form(nr = currentForm) # Select the form
        '''
        The code you want to run for every form
        '''
        currentForm += 1 # Add 1 to the current working form so the script knows what form is working next
like image 44
Stam Kaly Avatar answered Nov 18 '22 15:11

Stam Kaly