Question

Nous effectuons des tests de régression Selenium sur notre base de code existante, et certains écrans de notre application Web utilisent des fenêtres contextuelles pour les étapes intermédiaires.

Nous utilisons actuellement les commandes du test:

// force new window to open at this point - so we can select it later
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
selenium().click("//input[@value='Submit']");
selenium().waitForPopUp("enquiryPopup", getWaitTime());
selenium().selectWindow("enquiryPopup");

... qui fonctionne la plupart du temps . Parfois, le test échoue sur la ligne waitForPopUp () avec

.
com.thoughtworks.selenium.SeleniumException: Permission denied

Quelqu'un peut-il suggérer une méthode meilleure, plus fiable ?

De plus, nous exécutons principalement ces tests sur IE6 et 7.

Était-ce utile?

La solution

Ça marche !! Simplement pour faciliter la tâche des gens qui préfèrent le sélénien.

Cela a fonctionné pour moi avec IE7 (mode normal).

Quel ennui freaking. Merci au monstre spaghetti dans le ciel pour SO ou il n'y a aucun moyen que j'aurais ce travail dans IE.

<tr>
    <td>getEval</td>
    <td>selenium.browserbot.getCurrentWindow().open('', 'windowName');</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>buttonName</td>
    <td></td>
</tr>
<tr>
    <td>windowFocus</td>
    <td>windowName</td>
    <td></td>
</tr>
<tr>
    <td>waitForPopUp</td>
    <td>windowName</td>
    <td>3000</td>
</tr>
<tr>
    <td>selectWindow</td>
    <td>windowName</td>
    <td></td>
</tr>

Autres conseils

Si vous utilisez le mode * iehta, vous allez rencontrer quelques problèmes ici et là. Nous travaillons avec Selenium et il semble y avoir beaucoup de problèmes avec IE et AJAX.

Cependant, il semble que le problème que vous rencontrez soit celui dans lequel Selenium tente d’accéder à un composant dans une autre fenêtre avant de le charger complètement. Je ne sais pas trop quelle est la plage de délai d'attente par défaut, mais vous pouvez essayer de l'augmenter à 60 secondes environ (60000ms) pour résoudre le problème.

En dehors de cela, je vous suggèrerais d'exécuter vos tests dans Firefox (avec * chrome) car cela produirait des résultats beaucoup plus fiables, mais parfois cela n'est tout simplement pas possible pour des raisons commerciales.

Je viens de tester l'ajout d'une autre fonction sélénium, windowFocus () :

// force new window to open at this point - so we can select it later
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
selenium().click("//input[@value='Submit']");
selenium().windowFocus("enquiryPopup");
selenium().waitForPopUp("enquiryPopup", getWaitTime());
selenium().selectWindow("enquiryPopup");

Le test a réussi lorsque je l'ai exécuté localement, mais uniquement avec tous ces appels de méthodes - create / focus / wait / select.

Je suis sur le point de laisser le serveur de compilation exécuter tous les tests, et si cela réussit aussi, je vais en faire une fonction de bibliothèque ...!

Je devais sélectionner un iframe dans une fenêtre contextuelle et remplir un formulaire. J'ai eu du mal à utiliser la cmd selectWindow où sélénium ne parvenait pas à trouver mon iframe. J'ai donc supprimé la commande.

Ce sélénia a bien fonctionné pour moi (où le titre de l'iframe et id = account_frame):

<tr>
  <td>click</td>
  <td>//a[@class='item_add']</td>
  <td></td>
</tr>
<tr>
  <td>windowFocus</td>
  <td>account_frame</td>
  <td></td>
</tr>
<tr>
  <td>waitForPopUp</td>
  <td>account_frame</td>
  <td>10000</td>
</tr>

Essayez d’ajouter des instructions d’attente autour des appels qui vous causent des problèmes.

J'ai déjà eu les mêmes erreurs auparavant et la seule façon dont j'ai pu les résoudre de manière fiable était de passer des appels à System.Threading.Thread.Sleep (5000) ..

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