Comment puis-je confirmer un javascript popup avec Capybara?
J'ai essayé plusieurs exemples trouvés en ligne, mais avec pas de chance. Je suis à la recherche pour confirmer le message de confirmation d'un lien de suppression. La dernière tentative a été le code ci-dessous, mais qui a abouti à un Capybara::NotSupportedByDriverError erreur.
def confirm_dialog
page.evaluate_script('window.confirm = function() { return true; }')
end
- double possible de Comment tester une boîte de dialogue de confirmation avec le Concombre?. L'on a accepté la réponse de l'auteur est d'accord avec double.
- Duplicte diminué.
- Voir ma réponse ici pour la nouvelle manière de faire ceci: stackoverflow.com/a/26472467/2170577
InformationsquelleAutor Eric M. | 2011-08-03
Vous devez vous connecter pour publier un commentaire.
Tout d'abord passer à l'utilisation de Sélénium, comme le pilote en mettant @balise javascript en face de votre scénario.
Le code suivant dans votre concombre étape puis confirmez le dialogue:
Comme @NobbZ dit, cette question a été posée et répondue avant ici: Comment tester une boîte de dialogue de confirmation avec le Concombre?.
Plus de sélénium de la documentation disponible ici aussi: http://code.google.com/p/selenium/wiki/RubyBindings#JavaScript_dialogs
Capybara.current_driver = :selenium
ou bien ajouter js: fidèle à l'exemple de ce qui devrait mettre le pilote à:selenium
par défaut comme c'est le défautCapybara.javascript_driver
page.driver.browser.switch_to
mais j'ai reçu un warning de DÉPRÉCIATION, mais a été apporté à ceci: stackoverflow.com/questions/26275359/...L'ajout d'une réponse pour ces de frapper cette en 2016 et au-delà. Vous pouvez maintenant utiliser le Capybara directement à accepter une boîte de confirmation. Vous faites cela en enveloppant le code qui cause la boîte de dialogue de confirmation pour apparaît dans le accept_confirm fonction.
pour capybara-webkit:
qui est encore à travailler, mais la documentation dit aussi:
Voir https://github.com/thoughtbot/capybara-webkit , de recherche "accept_js_confirms"
J'ai eu des problèmes de synchronisation avec le navigateur boîtes de dialogue dans un environnement CI donc, je suis d'interrogation pour une boîte de dialogue avant de l'accepter:
J'ai dû utiliser un sommeil dans le webkit d'essai puisqu'il ne pourrait pas everynow et puis sinon.
Voici ce que j'ai trouvé après la lecture de tous les posts:
Je suppose que vous devez ajouter le sélénium pour votre gem-fichier et de le configurer et le capybara qui capybara utilise le sélénium dans le pilote.
Je pense aussi que Comment tester une boîte de dialogue de confirmation avec le Concombre? est très similaire à votre question, en particulier la accepté de répondre.
essayez d'ajouter
:js => true
à votre test.Dans le Capybara très simple à accepter la fenêtre du modèle. Même nous, nous pouvons faire de même pour le sélénium, mais sa peu difficile pour les personnes qui ne sont pas conscients de sélénium.
page.accept_modal #pour accepter la fenêtre modale
page.dismiss_modal #pour Refuser/Rejeter la fenêtre modale
NoMethodError: private method 'accept_modal' called for #<Capybara::Session>