Question

Je teste des problèmes parties de mes pages html avec Selenium RC. Si un élément est présent dans la page et est visible lorsque la page est chargée alors il n'y a pas de problème, Selenium RC peut y accéder et peut obtenir sa valeur ou écrire en elle (si elle est une entrée), etc.

Mais si l'élément est pas visible et il est seulement visible en utilisant javascript, puis le sélénium ne peut pas travailler avec elle. Par exemple, j'ai 2 divs:

<div id="row2" class="row" onclick="switchTo('row2e');">
   <div class="row label">Address</div>
   <div class="row data">${user.address}</div>
</div>
<div id="row2e" class="row-edit">
   <form id="address-form" name="address-form" method="post" onsubmit="">
     <div class="row label">Address-Must be 5-25 letters or numbers</div>
     <input type="text" id="address" name="address" value="${user.address}"/>
     <button>Change address</button>
   </form>
 </div>

Lorsque la page est chargée div "row2" est visible et "row2e" est caché. Lorsque je clique sur « row2 » les divs seront modifiés (en utilisant javascript) pour que « row2 » sera caché et « row2e » sera visible. A ce stade, Selenium RC ne peut pas gérer l'entrée dans la div « de row2e ».

J'ai le même problème lors du changement de plus grandes parties de la page en utilisant javascript (sans soumettre la page).

Toutes les idées pourquoi cela se produit?

Était-ce utile?

La solution

Faites-vous RC attendre un moment pour que le changement se produise? Dans de nombreux cadres de script de l'interface utilisateur, le coureur ne sera pas attendre les résultats interactifs de quelque chose que vous avez fait à moins que vous lui dites. Normalement, en utilisant iMacros (le Sélénium pauvre homme) Je dois seulement attendre postbacks automatisé, mais même l'exécution JS peut prendre plus de temps qu'un ordinateur rapide en cours d'exécution Sélénium est prêt à attendre. Faites-le dormir pendant une demi-seconde avant d'essayer d'accéder aux commandes nouvellement visibles.

Autres conseils

Je recommande d'utiliser pour les pages plan de test qui ont beaucoup d'éléments changeants. Il dispose d'un système d'attente intelligente, de sorte que si un élément n'existe pas, il attend quelques instants avant de continuer. Cela vous permet d'écrire des tests sans avoir à se soucier de savoir si beaucoup l'élément est statique ou dynamique.

Pour un exemple rapide, vous pouvez taper ici:

Click //div[@id="row2"]
Click //div[@id="row2e"]//button

Si le bouton est un élément dynamique attendra plan de test quelques secondes pour qu'il apparaisse, puis cliquez dessus. Mais pour la plupart que vous venez d'utiliser la page en tant qu'utilisateur et va comprendre plan de test quoi faire.

BTW, il peut utiliser Selenium comme back-end, addtion à HTMLUnit dans.

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