Domanda

Sto scrivendo uno script di test web con python (2.6) e meccanizzare (0.1.11). La pagina che sto lavorando con ha un modulo HTML con un campo di selezione in questo modo:

<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>

In Mechanize, se provo qualcosa di simile:

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

Poi ho un errore: ClientForm.ItemNotFoundError: insufficient items with name 'E'

posso fare questo manualmente con l'estensione di Firefox "Tamper Data". C'è un modo per fare questo con Python e meccanizzare? Posso in qualche modo convincere meccanizzare che la forma in realtà ha il valore che voglio presentare?

È stato utile?

Soluzione

Dopo aver frugato con le budella di ClientForm, sembra che si può ingannare in aggiunta di un altro elemento.

Per un campo di selezione, qualcosa di simile sembra funzionare:

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

Allo stesso modo, per un controllo pulsante di opzione

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

Si noti che l'inizializzazione dell'oggetto aggiorna automaticamente l'elenco di elementi per il controllo specificato, in modo che solo bisogno di creare l'elemento correttamente per che appaia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top