Frage

Ich bin mit dem Zope testbrowser, die in meiner letzten Frage empfohlen wurden. Das Problem, das ich bin vor ist, dass ich die getControl Funktion verwenden kann, um verschiedene Objekte zu steuern, wie:. Passwort, Benutzername usw.

Ich versuche, die Seite einreichen auf die nächste Seite zu bekommen, aber die Submit-Button keine ‚name‘ Variable hat, nur eine ‚id‘ Variable. ‚Senden‘ wird wie folgt geschrieben:

<input type="submit" id="lgn_button" class="button" tabindex="3" accesskey="s" />

und die anderen Objekte geschrieben werden als:

<input type="password" class="button" name="password" id="password" size="24" maxlength="20" accesskey="p" tabindex="2" value=""/></td>

Ich habe keinen Zugriff auf diese zu ändern. Der Python Zope Code verwende ich die Kontrolle über das ‚password‘ Objekt zu gewinnen ist:

browser.getControl(name='password')

Die Submit-Button nicht 'name' hat so habe ich geschrieben:

browser.getControl(id='lgn_button')

Diese druckt den Fehler, dass 'id' ist ungültig:

TypeError: getControl() got an unexpected keyword argument 'id'

Gibt es eine Möglichkeit der Kontrolle über einen der anderen Werte zu gewinnen, in ‚Senden‘.

Vielen Dank für jede Hilfe.

War es hilfreich?

Lösung

Ich gehe davon aus, dass für einen oder anderen Grund, können Sie keinen ‚name‘ Attribut zu Ihrem Tag hinzuzufügen, aber wenn es nur ein ‚Name‘, dass Sie nicht hinzufügen können, können Sie explizit einen ‚value = gesetzt Senden‘(statt auf dem Standard eines verlassen, was Senden) und dann browser.getControl verwenden (‚Senden‘)

Gelingt das nicht, können Sie etwas entlang der Linien von tun

for form in browser.mech_browser.forms():
    for control in form.controls:
        if control.id == 'lgn_button':
            return control

Sie möchten vielleicht sogar mit, dass Browser.getControl () verlängern und es zurück zu zope.testbrowser beitragen. ;)

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