5 Stimmen

TypFehler: ListControl, muss eine Sequenz setzen (Python-Fehler)

Ich verwende Python Mechanize, um eine Website zu öffnen, ein Formular auszufüllen und dieses Formular abzuschicken. Es ist eigentlich ziemlich einfach. Es funktioniert, bis ich über Optionsfelder und "select" Eingabefelder kommen.

br.open(url)
br.select_form(name="postmsg")
br.form['subject'] = "Is this good for the holidays? "
br.form['message'] = "I'm new to technology."
br.form['E'] = '0'
br.submit()

  br.form['E'] = '0'
  File "build/bdist.linux-x86_64/egg/ClientForm.py", line 2897, in __setitem__
  File "build/bdist.linux-x86_64/egg/ClientForm.py", line 2092, in __setattr__
  File "build/bdist.linux-x86_64/egg/ClientForm.py", line 2100, in _set_value
TypeError: ListControl, must set a sequence

Warum erhalte ich diesen Fehler? Warum kann ich nicht einstellen E genau wie die Textfelder? (E ist eine Optionsschaltfläche)

Edit: Dies ist das Formular, laut Web Developer.

Elements
Index   Id  Name    Type    Value   Label   Size    Maximum Length  State
0   subject subject text            35      
2   message message textarea                    
3   identity    identity    select          1       
13      action_btn  hidden                  
14      _charset_   hidden                  
16      r   hidden  /Stocks_(A_to_Z)/Stocks_G               
9       E   radio   0               

Checked
8       E   radio   1               
15      .crumb  hidden  1n1Yo3MQae3             
7       E   radio   2               
17      bn  hidden  25263               
6       E   radio   3               
5       E   radio   4               
4       E   radio   5               
12  SubmitCancel    SubmitCancel    submit  Cancel              
1   mbpostthreads   threads button  Check Existing Topics First             
11  SubmitPost  SubmitPost  submit  Post Message                
10  SubmitPreview   SubmitPreview   submit  Preview Message             
18  yIdCoreIdUser       hidden  annamae41g

0 Stimmen

Bitte liefern Sie den HTML-Code für die Optionsfelder

8voto

Amirshk Punkte 7964

Optionsfelder und Kontrollkästchen können ein anderes Verhalten als andere Elemente haben. Das hängt von ihrem Namen und ihrer ID ab.

Wenn die Artikel den gleichen Namen haben, versuchen Sie dies:

br.find_control(name="E").value = ["0"]

Eine andere Möglichkeit ist:

form.find_control(name="E", kind="list").value = ["0"]

und schließlich könnte dies funktionieren:

    br["E"] = ["0"]

(Ich habe Mechanize schon eine Weile nicht mehr benutzt, daher weiß ich es nicht mehr genau).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X