Le sélénium accepter automatiquement des alertes
Personne ne sait comment désactiver cette option? Ou comment obtenir le texte d'alertes qui ont été acceptés automatiquement?
Ce code doit travailler,
driver.findElement(By.xpath("//button[text() = \"Edit\"]")).click();//causes page to alert() something
Alert alert = driver.switchTo().alert();
alert.accept();
return alert.getText();
mais au lieu de cela donne cette erreur
No alert is present (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 2.14 seconds
J'utilise FF 20 avec le Sélénium 2.32
Avez-vous résolu votre problème?
OriginalL'auteur Zackkenyon | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
Juste l'autre jour, j'ai répondu quelque chose du genre, donc c'est encore frais. La raison pour laquelle le code est défaut est, si l'alerte n'est pas affichée par le temps, le code est traitée, il sera surtout l'échec.
Heureusement, les gars de Selenium WebDriver ont une attente déjà mis en œuvre pour cela. Pour que votre code est aussi simple que cela:
Vous pouvez trouver toutes les API de
ExpectedConditions
ici, et si vous voulez le code de cette méthode ici.Ce code résout également le problème parce que vous ne pouvez pas retourner alerte.getText() après la fermeture de l'alerte, afin de stocker dans une variable pour vous.
OriginalL'auteur aimbire
Avant de l'accepter() l'alerte vous avez besoin pour obtenir le texte. Ce que vous êtes en train de faire maintenant, c'est d'accepter (en cliquant sur "OK") sur l'alerte puis en essayant d'obtenir les alertes de texte après qu'il est sorti de l'écran, c'est à dire pas d'alerte présent.
Essayez ce qui suit, je viens d'ajouter une Chaîne de caractères qui permet d'extraire le texte de l'alerte puis de retour cette chaîne à la place.
alert.accept()
de mon code entièrement, j'ai le même problème. cela ne résout pas le problème.Qu'entendez-vous la supprimer complètement? l'alerte.accept() est toujours là, ce qui me manque?
OriginalL'auteur so cal cheesehead
Selenium webdriver ne pas
wait
de l'alerte.Donc, il va essayer de passer à une inexistant alerte et c'est pourquoi elle échoue.
Pour un accès rapide et pas bon, corriger, mettre dans un
sleep
.Une meilleure solution serait de mettre en place votre propre liste d'attente pour l'alerte, avant d'essayer de passer à l'alerte.
Mise à JOUR
Quelque chose comme ceci, copie collé de ici
Je ne peux tout simplement pas l'obtenir, comment peuvent plaider en faveur de l'utilisation de ce. Le code de isAlertPresent() est similaire, mais pas besoin d'utiliser un sleep().
OriginalL'auteur Amey
Méthode suivante synchronisé avec option d'ajouter plus de stabilité
OriginalL'auteur Santhosh Raja