Pregunta

Estoy escribiendo un guión de pruebas web con Python (2.6) y mecanizar (0.1.11). La página que estoy trabajando tiene un formulario HTML con un campo de selección de la siguiente manera:

<select name="field1" size="1">
    <option value="A" selected>A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
</select>

En mecanizar, si intento algo como esto:

browser.form['field1'] = ['E']

A continuación, me sale un error: ClientForm.ItemNotFoundError: insufficient items with name 'E'

Puedo hacer esto manualmente con la extensión de Firefox "Tamper Data". ¿Hay una manera de hacer esto con pitón y mecanizar? ¿Hay algún modo convencer a mecanizar que la forma en realidad tiene el valor Deseo someter?

¿Fue útil?

Solución

Después de hurgar con las tripas de ClientForm, parece que puede engañar en la adición de otro elemento.

Para un campo de selección, algo como esto parece que funciona:

xitem = ClientForm.Item(browser.form.find_control(name="field1"), 
        {'contents':'E', 'value':'E', 'label':'E'})

Del mismo modo, para un control de botón de radio

xitem = ClientForm.Item(browser.form.find_control(name="field2"),
        {'type':'radio', 'name':'field2', 'value':'X'})

Tenga en cuenta que el inicializador artículo se actualizará automáticamente la lista de elementos para el control especificado, por lo que sólo necesita para crear el elemento correctamente para que aparezca.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top