2016-03-31 5 views
1

Derzeit Mechanize passend mit einigen FormenKeine Kontrolle Namen mit Python Mechanize

Dies ist mein aktueller Code-Snippet einreichen:

add_control = br.form.find_control(name='CRN_IN', id='crn_id1') 

Es gibt insgesamt 10 Textfelder, die ich folgendes Drucken mit Code:

<TextControl(CRN_IN=)> 
    <HiddenControl(assoc_term_in=) (readonly)> 
    <HiddenControl(start_date_in=) (readonly)> 
    <HiddenControl(end_date_in=) (readonly)> 
    <HiddenControl(RSTS_IN=WR) (readonly)> 

    <TextControl(CRN_IN=)> 
    <HiddenControl(assoc_term_in=) (readonly)> 
    <HiddenControl(start_date_in=) (readonly)> 
    <HiddenControl(end_date_in=) (readonly)> 
    <HiddenControl(RSTS_IN=WR) (readonly)> 

    <TextControl(CRN_IN=)> 
    <HiddenControl(assoc_term_in=) (readonly)> 
    <HiddenControl(start_date_in=) (readonly)> 
    <HiddenControl(end_date_in=) (readonly)> 
    <HiddenControl(RSTS_IN=WR) (readonly)> 

    <TextControl(CRN_IN=)> 
    <HiddenControl(assoc_term_in=) (readonly)> 
    <HiddenControl(start_date_in=) (readonly)> 
    <HiddenControl(end_date_in=) (readonly)> 
    <HiddenControl(RSTS_IN=WR) (readonly)> 

    <TextControl(CRN_IN=)> 
    <HiddenControl(assoc_term_in=) (readonly)> 
    <HiddenControl(start_date_in=) (readonly)> 
    <HiddenControl(end_date_in=) (readonly)> 
    <HiddenControl(RSTS_IN=WR) (readonly)> 

    <TextControl(CRN_IN=)> 
    <HiddenControl(assoc_term_in=) (readonly)> 
    <HiddenControl(start_date_in=) (readonly)> 
    <HiddenControl(end_date_in=) (readonly)> 
    <HiddenControl(RSTS_IN=WR) (readonly)> 

    <TextControl(CRN_IN=)> 
    <HiddenControl(assoc_term_in=) (readonly)> 
    <HiddenControl(start_date_in=) (readonly)> 
    <HiddenControl(end_date_in=) (readonly)> 
    <HiddenControl(RSTS_IN=WR) (readonly)> 

    <TextControl(CRN_IN=)> 
    <HiddenControl(assoc_term_in=) (readonly)> 
    <HiddenControl(start_date_in=) (readonly)> 
    <HiddenControl(end_date_in=) (readonly)> 
    <HiddenControl(RSTS_IN=WR) (readonly)> 

    <TextControl(CRN_IN=)> 
    <HiddenControl(assoc_term_in=) (readonly)> 
    <HiddenControl(start_date_in=) (readonly)> 
    <HiddenControl(end_date_in=) (readonly)> 
    <HiddenControl(RSTS_IN=WR) (readonly)> 
:

for form in br.forms():             
    print "Form name:", form.name           
    print form 

Dies ist der Ausgang

Wie in meinem Codeschnipsel gezeigt, kann ich die 1 - 10 Textfelder mit der id='crn_id1' bis hin zu id=crn_id10 auswählen. Aber mein Problem ist, wenn ich versuche, die folgenden:

add_control = br.form.find_control(name='CRN_IN', id='crn_id1') 
add_control['CRN_IN'] = '34688' # this indicates a CRN to submit 
response = br.submit() 

Ich erhalte die folgende Fehlermeldung:

Traceback (most recent call last): 
    File "./add2.py", line 37, in <module> 
    add_control['CRN_IN'] = '34688' 
    File "/usr/local/lib/python2.7/site-packages/mechanize/_form.py", line 1212, in __getattr__ 
    (self.__class__.__name__, name)) 
AttributeError: TextControl instance has no attribute '__setitem__' 

EDIT:

Nachdem ich .select_form() zum find_control Zeile hinzufügen, erhalte ich der folgende Fehler:

Traceback (most recent call last): 
    File "./add2.py", line 35, in <module> 
    add_control = br.form.find_control(name='CRN_IN', id='crn_id1').select_form() 
    File "/usr/local/lib/python2.7/site-packages/mechanize/_form.py", line 1212, in __getattr__ 
    (self.__class__.__name__, name)) 
AttributeError: TextControl instance has no attribute 'select_form' 

Antwort