2009-12-02 21 views
5

Tôi đang sử dụng Python Mechanize để mở một trang web, điền vào biểu mẫu và gửi biểu mẫu đó. Nó thực sự khá đơn giản. Nó hoạt động cho đến khi tôi đi qua các nút radio và hộp chọn "chọn".LoạiError: ListControl, phải thiết lập một chuỗi (lỗi 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 

Tại sao tôi gặp phải lỗi này? Tại sao tôi không thể đặt E giống như các hộp văn bản? (E là nút radio)

Chỉnh sửa: Đây là biểu mẫu, theo nhà phát triển web.

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

Vui lòng cung cấp HTML cho các nút radio – Amirshk

Trả lời

8

Nút radio và hộp kiểm có thể có hành vi khác nhau, sau đó là các yếu tố khác. Nó phụ thuộc vào tên và id của họ.

Nếu các mục có cùng tên, hãy thử làm điều này:

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

lựa chọn khác là:

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

và cuối cùng, điều này có thể làm việc:

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

(Tôi đã không sử dụng cơ giới trong một thời gian vì vậy tôi không nhớ chính xác).

Các vấn đề liên quan