2009-12-02 10 views
5

Estoy utilizando Python Mechanize para abrir un sitio web, completar un formulario y enviar ese formulario. En realidad es bastante simple. Funciona hasta que encuentro botones de opción y "selecciona" cuadros de entrada.TypeError: ListControl, debe establecer una secuencia (error de 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 

¿Por qué recibo este error? ¿Por qué no puedo configurar E como en los cuadros de texto? (E es un botón de opción)

Editar: Esta es la forma, de acuerdo con el desarrollador 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

Proporcione el HTML para los botones de opción – Amirshk

Respuesta

8

Los botones de opción y las casillas de verificación pueden tener un comportamiento diferente al de otros elementos. Depende de su nombre y su id.

Si los artículos tienen el mismo nombre, trata de hacer esto:

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

Otra opción es:

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

y, finalmente, esto podría funcionar:

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

(I no he utilizado el mecanizado por un tiempo, así que no recuerdo exactamente).

Cuestiones relacionadas