2011-03-29 1 views
0

J'utilise Selenium pour automatiser les tests de sites Web. Une partie des tests implique d'attendre que les requêtes AJAX se terminent. Je me sers de cette ligne à faire avec jQuery 1.4:Sélénium en attente d'AJAX dans Chrome

selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().jQuery.active == 0", "5000"); 

Il a bien fonctionné dans Chrome et Firefox 4, mais pas IE9. Ensuite, j'ai mis à jour vers jQuery 1.5, et il a magiquement cessé de fonctionner dans Chrome. J'ai essayé les variations suivantes, mais aucun d'entre eux travaillent:

selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().jQuery.active == 0", "5000"); 
selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().jQuery.ajax.active == 0", "5000"); 
selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().$.active == 0", "5000"); 
selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().$.ajax.active == 0", "5000"); 

Le SeleniumException est qu'il ne peut pas lire la propriété active ou ajax undefined, donc je suppose qu'il est en quelque sorte pas en mesure de se rendre à jQuery. Mon collègue exécute les mêmes tests sur Firefox 4, et ils passent.

Quelqu'un a-t-il rencontré ce problème? Aucune suggestion?

Répondre

0

Apparemment tout dans Selenium peut être corrigé en lançant Thread.Sleep()s au hasard. La fenêtre n'a pas fini de charger dans certains cas, c'est pourquoi $ était indéfini. J'ai mis un sommeil avant l'attente, et ça marche bien maintenant.

je devais utiliser la ligne suivante:

selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().$.active == 0", "5000"); 

Même si les gens disent que je devrais avoir utilisé $.ajax.active si j'utilise jQuery 1.5, il est indéfini pour moi, alors que $.active œuvres.

Questions connexes