2009-12-02 18 views
5

私はPython Mechanizeを使用してWebサイトを開き、フォームに記入してフォームを送信します。 実際はかなりシンプルです。 ラジオボタンと入力ボックスを「選択」するまで機能します。TypeError:ListControl、シーケンスを設定する必要があります(Pythonエラー)

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 

なぜこのエラーが発生しますか?テキストボックスのようにEを設定できないのはなぜですか? (Eはラジオボタンです)

編集:これは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

ラジオボタンのHTMLを指定してください – Amirshk

答えて

8

ラジオボタンやチェックボックスはその後、別の動作他の要素を持つことができます。それは彼らの名前とIDに依存します。

項目が同じ名前を持っている場合は、このやってみてください:

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

別のオプションは次のとおりです。

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

そして最後に、これはうまくいくかもしれない:

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

(Iを私は正確に覚えていないので、しばらく機械化を使用していない)。

関連する問題