2010-01-28 16 views
1

J'utilise le testeur 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 comme: mot de passe, nom d'utilisateur etc.Utilisez getControl pour contrôler des objets autres que la variable de nom

J'essaie de soumettre la page pour aller à la page suivante, mais le bouton Envoyer n'a pas de nom 'variable, 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 invalide:

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.

Répondre

0

Je suppose que, pour une raison ou une autre, vous ne pouvez pas ajouter un attribut 'nom' à votre balise, mais si c'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 utiliser 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 pourrait même vouloir étendre Browser.getControl() avec cela et le redonner à zope.testbrowser. ;)