2009-04-03 8 views
4

parfois mes tests de sélénium obtenir des délais d'attente ces suggestions: How do you get selenium to recognize that a page loaded? n'a pas résolu mon problème. Cela arrive surtout au début du test quand j'utilise openAndWait. La chose étrange est que la page est effectivement ouverte, mais le test s'arrête et ne s'exécute pas. J'utilise la version beta-2 et multiwindow vrai. J'appelle mes navigateurs avec la commande personnalisée. Je suis ouvert pour toutes suggestions.Selenium commande ouverte parfois ne fonctionne pas

thx

Kuku

+0

également : http://stackoverflow.com/questions/3134474/selenium-firefox-open-timeout – Blundell

Répondre

1

Avez-vous essayé de mettre une pause (quelques secondes) fixes après openAndWait? D'après mon expérience, tous les "ouvertures" et "clics" dans le sélénium (même ceux * AndWait) ne vous garantissent pas que la page est entièrement chargée dans le navigateur avant le traitement de la commande sélénium suivante. C'est pourquoi j'ajoute toujours une petite pause après de telles commandes.

Même si vous voyez la page affichée dans le navigateur, cela ne signifie pas nécessairement que tout est disponible pour le processeur de commande Selenium à ce moment-là.

+0

J'ai ajouté une pause, mais il a échoué parfois. J'ai eu deleteAllCookies comme première commande et après ouvert, et il a bloqué à ouvert ce que j'ai essayé ensuite était de supprimer la commande deleteAllCookies + en gardant votre suggestion semble faire mes tests plus stables merci. – kukudas

+0

Vous pouvez également essayer de régler le paramètre de vitesse du sélénium pour ralentir le sélénium dans son ensemble. Expérimentez avec ceci jusqu'à ce que vos tests deviennent stables. –

+0

ouais j'ai essayé ça aussi c'est vraiment frustrant parfois ça marche 6-7 fois et puis ça échoue :(mais la commande pause l'a fait fonctionner plus souvent stable. – kukudas

1

Cela fonctionne pour moi dans IE6, IE7, IE8, FF, Chrome:

<tr> 
    <td>waitForCondition</td> 
    <td> 
    (selenium.browserbot.getCurrentWindow().$$("body").length == 1) ? true : false; 
    </td> 
    <td>10000</td> 
</tr> 

Il interroge seulement la fenêtre cible et vérifie l'élément du corps. Cependant, il est toujours sensible à un délai d'expiration, mais vous pouvez le définir comme vous le souhaitez.

Remarque: le code ci-dessus utilise le prototype JS pour obtenir l'élément de corps. Ceci n'est pas obligatoire mais nécessitera quelques modifications si vous utilisez une autre librairie JS.

1

J'ai eu un problème similaire, le mien va juste expirer, peu importe quoi.
Je vois que la page est rendue complètement, mais pour une raison quelconque selenium.open(relative_url) va juste attendre.

J'ai essayé de définir le délai d'attente à 120 secondes et toujours le même problème. Réglage de la vitesse à vraiment lent n'a pas aidé non plus.

Je l'ai fixé en manipulant l'exception avec try/catch et fondamentalement procéder à la validation si la page vraiment rendu ou non (fonctionne comme un charme) si mon code ressemble à ceci:

try { 
    selenium.open(relative_url); 
} catch (Exception e) { 
    // check if page rendered completely here 
} 
// continue 
Questions connexes