Python Sélénium UnexpectedAlertPresentException
Je suis en cours d'exécution de base CRUD tests avec python et de la laitue en utilisant selenium webdriver.
Tous mes autres tests s'exécutent correctement, mais lorsque je clique sur "Supprimer", il y a une boîte de dialogue modale qui demande à l'utilisateur de confirmer qu'ils veulent supprimer cet utilisateur. Le moment le popup s'affiche, je reçois l'exception ci-dessous. J'ai perdu 2 heures à essayer d'obtenir que cela fonctionne. J'imagine que il y a une solution simple.
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 164, in check_response
raise exception_class(message, screen, stacktrace)
UnexpectedAlertPresentException: Message: u'Modal dialog present' ; Stacktrace:
at nsCommandProcessor.prototype.execute (file:///tmp/tmpeV2K89/extensions/fxdriver@googlecode.com/components/command_processor.js:11520:13)
La ligne dans steps.py qui est en train de jeter l'erreur est présente.
world.browser.find_element_by_link_text("Delete User").click()
Et le html pour cet élément est présent.
<a href="/users/5910974510923776/delete" onclick="return confirm('Are you sure you want to delete this user?');">Delete User</a>
Si une alerte de l'emploi (comme en java)
c'est juste
d.switchTo().alert().accept();
(s'il vous plaît trouver l'équivalent de liaison en python). Si ses une boîte de dialogue modale alors je suppose que u peut essayer de trouver le localisateur de ok.c'est juste
driver.switch_to_alert.accept()
ou même driver.switch_to.alert.accept()
. Je l'ai trouvé légèrement différences sur les deux mehods donc pensé que c'est important de conseil pour tous ceux qui luttent autour de cela. La même chose s'applique à la driver.switch_to.window()
méthode.OriginalL'auteur andygimma | 2015-02-08
Vous devez vous connecter pour publier un commentaire.
Vous devez passer à l'alerte et de l'accepter:
ainsi, il semble comme il y a une alerte ouvert avant de cliquer sur le bouton Supprimer un Utilisateur.
J'ai eu une faute de frappe, votre réponse est correcte. Je n'ai pas assez de points de réputation pour upvote vous si. Merci!
bon point, même s'il devrait être
.switch_to.alert()
. (pas besoin d'appelerswitch_to
). Merci.Devrait-il être
.switch_to.alert()
ou tout simplement.switch_to.alert
? J'utilise Python 2.7 et le Sélénium 2.46.0, et si j'essaie.switch_to.alert()
, je vais obtenir un "TypeError: 'Alerte' objet n'est pas appelable" l'exception". Le code source montre que l'alerte est décoré par @bien donc je pense que nous devrions l'appeler sans les parenthèses.OriginalL'auteur alecxe