Frage

Ich schreibe einen Web-Testskript mit Python (2.6) und mechanisieren (0.1.11). Die Seite Ich arbeite mit hat ein HTML-Formular mit einem Auswahlfeld wie folgt aus:

<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, wenn ich versuche, etwas wie folgt aus:

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

Dann bekomme ich eine Fehlermeldung: ClientForm.ItemNotFoundError: insufficient items with name 'E'

Ich kann dies mit der „Tamper Data“ Firefox-Erweiterung manuell tun. Gibt es eine Möglichkeit, dies mit Python zu tun und mechanisieren? Kann ich irgendwie überzeugen mechanisieren, dass die Form tatsächlich den Wert I einreichen möchten?

War es hilfreich?

Lösung

Nach dem Stochern mit den Eingeweiden von ClientForm, es sieht aus wie Sie es in dem Hinzufügen eines weiteren Artikels Trick können.

Für ein Auswahlfeld, so etwas wie dies scheint zu funktionieren:

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

In ähnlicher Weise für eine Funktastensteuerung

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

Beachten Sie, dass der Artikel initializer wird automatisch die Liste der Elemente für das angegebene Steuerelement aktualisieren, so müssen Sie nur den Artikel richtig erstellen, dafür zu erscheinen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top