Question

J'utilise le testbrowser Zope qui a été recommandé dans ma dernière question. Le problème que je suis confronté est que je peux utiliser la fonction getControl pour contrôler différents objets tels que:. Mot de passe, etc nom d'utilisateur

Je suis en train de soumettre la page pour accéder à la page suivante, mais le bouton d'envoi n'a pas variable « nom », juste une variable « id ». « Soumettre » est écrit comme suit:

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

et les autres objets sont écrits comme:

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

Je n'ai pas accès à changer. Le code Zope python J'utilise pour prendre le contrôle de l'objet « mot de passe » est:

browser.getControl(name='password')

Le bouton d'envoi n'a pas « nom », donc je l'ai écrit:

browser.getControl(id='lgn_button')

Ceci affiche l'erreur 'id' est pas valide:

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

Est-il possible de prendre le contrôle de l'une des autres valeurs « submit ».

Merci pour toute aide.

Était-ce utile?

La solution

Je suppose que, pour une raison ou une autre, vous ne pouvez pas ajouter un attribut « nom » à votre étiquette, mais si elle est seulement un « nom » que vous ne pouvez pas ajouter, vous pouvez définir explicitement une « valeur = soumettre »(au lieu de compter sur la valeur par défaut d'un, ce qui est de soumettre) puis utilisez browser.getControl ( « soumettre »)

A défaut, vous pouvez faire quelque chose le long des lignes de

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

Vous pouvez même étendre Browser.getControl () avec cela et contribuer de nouveau à zope.testbrowser. ;)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top