2009-09-09 5 views
4

Je reçois cette erreur lors de tests de sélénium RC contre IE7.SeleniumException: ERREUR: Il y avait une alerte inattendue!

com.thoughtworks.selenium.SeleniumException: ERREUR: Il y avait une alerte inattendue! [error: [object Error]]

Cela arrive chaque fois que j'essaie de cliquer sur un lien ou un onglet ou quoi que ce soit cliquable. Toutes les idées les gars. C'est vraiment frustrant.

+0

Collez le code de votre test. – Santi

Répondre

4

Vérification de la fonction a été appelée dans votre application web Google search results for your error message et the selenium development mailing list, il semble que si ce n'est pas un bogue dans Sélénium mais il est Sélénium vous dit qu'un window.alert inattendu(), et que Sélénium ne savoir comment le gérer parce que vous ne l'avez pas dit comment.

+5

cette page arrive en premier pour la recherche google! : D – dwenaus

2

Je serais surpris si le même problème ne se produit pas dans d'autres navigateurs. Peut-être que votre application se comporte différemment selon le navigateur? Fondamentalement Selenium signale qu'il ne peut pas passer à d'autres commandes après avoir cliqué sur ces liens ou onglets parce qu'il a détecté une alerte JavaScript inattendue. Vous ne verrez pas ces alertes parce que Selenium les consomme. Il y a quelques choses que vous pouvez faire pour comprendre ce qui se passe.

La première chose que je suggère est de simplement vérifier votre application dans IE7. Complétez manuellement les étapes de vos tests. Voyez-vous les alertes JavaScript? Si c'est le cas, vous devrez ajouter les commandes appropriées à votre test Selenium. Si, pour une raison ou une autre, vous ne pouvez pas répliquer les alertes manuellement, vous pouvez soit ignorer l'alerte en utilisant la commande getAlert, soit utiliser la réponse de getAlert pour trouver le texte de l'alerte inattendue.

Java/exemple TestNG pour trouver le message de l'alerte:

assertEquals(selenium.getAlert(), "Hello World"); 

Ce qui précède toujours faire votre test à l'échec (à moins que l'alerte ne vraiment dire « Bonjour tout le monde »), mais échouera avec un message similaire à "Hello World" attendu mais était "Votre message d'alerte inattendu" ".

0

Je vois la même erreur. Normalement, nous exécutons notre test en utilisant C#, mais dans ce cas, nous mettons en place quelques tests simples en utilisant l'IDE Selenium.

Étant donné que Selenium IDE enregistre vos événements et vous permet ensuite de les lire, vous vous attendez à ce qu'il gère l'alerte. Lorsque vous regardez les événements qu'il enregistre, il semble qu'il capture l'alerte. Cependant, lorsque vous le lisez, les événements sont hors service.

D'abord, il capture l'événement click. Puis utilise assertAlert pour s'assurer que l'alerte est arrivée.

Le problème se produit lorsque vous le lisez. Il fait l'événement de clic, puis des erreurs. Si vous déplacez l'instruction assertAlert avant l'événement click, cela ne fonctionne pas. Si vous changez l'assertAlert à waitForAlert qui ne fonctionne pas non plus. Je n'arrive pas à comprendre quand même que la lecture fonctionne dans l'IDE Selenium. Si je n'avais pas besoin de cette version exécutable pour un non-technicien, je la mettrais dans mes tests habituels et en finirais avec. Editer: Après un nouvel examen, il apparaît que le message d'alerte ne correspond pas. Même si elle a attrapé l'alerte elle-même en faisant l'enregistrement. L'inspection visuelle ne fait rien pour m'aider à déterminer ce qu'elle considère comme différent.

+0

'storeAlert (dummy_variable)' avant que 'click()' semble fonctionner mieux pour moi. – Kev

1

Je reçois une chose similaire.
Aucune erreur dans IE, popups d'erreur JS dans Chrome, rien dans FF ...jusqu'à ce que je cours mon script Selenium et qu'il signale une erreur inattendue. Amusant quand je fais selenium.IsAlertPresent() il renvoie false, même s'il dit qu'il y en avait un.

0

J'ai déjà vu cette erreur. Dans mon cas, le problème était la latence dans un objet de réponse Ajax qui provoquait une erreur IDE Selenium. La solution qui a fonctionné pour moi était d'ajouter une commande de pause juste après tout appel Ajax dans le script de test.

L'appel ci-dessous quelques secondes prenait pour revenir avec une réponse valide Ajax cliquez = # css Form3 > div.addButton > button.btn.btn primaire

En ajoutant une clause de pause, la problème « d'alerte inattendue » a été résolu pause

0

Je vous suggère de tester manuellement les étapes w qui sont là dans votre test de sélénium. Si ce n'est pas reproductible alors ce n'est peut-être pas le problème dans la page. Veuillez déboguer votre script sélénium avec la fonction assert pour identifier où trouver l'alerte inattendue.

if (selenium.isAlertPresent()) { 
assertEquals(selenium.getAlert(), "Hello World"); 

}

qui vous aidera à identifier le problème. Je vous suggère de répéter le test car vous pouvez trouver cette assertion dans différentes parties de votre code.

Questions connexes