2017-01-04 3 views
0

Ich versuche einen Test zu schreiben. Es gibt eine Seite mit einem Element und einer Lösch-Schaltfläche, um dieses Element zu löschen. Wenn es manuell gemacht wird, funktioniert es wie erwartet.Capybara, Sweet-Alert, click_button scheint zu funktionieren, löst aber keine Aktion aus

Derzeit sieht der Test wie folgt aus:

visit "/argumentation#!/overview" 
expect(page).to have_content("Philosophie") 

save_screenshot 
click_button "Delete" 

save_screenshot 
click_button "Yes, delete it!" 

save_screenshot 
sleep 5 

save_screenshot 
expect(page).not_to have_content("Philosophie") 

(Bilder von den Screenshots sind unten).

Um sicherzustellen, dass click_button "Yes, delete it!" ist eigentlich die gleiche Schaltfläche wie im Popup angezeigt, fügte ich click_button "Yes, delete it!" vor der click_button "Delete"-Aktion. Dies würde passieren:

Capybara::ElementNotFound: 
    Unable to find button "Yes, delete it!" 

Weiß jemand, warum der Test fehlschlägt?

In anderen Stackoverflow-Fragen, fragte einige über die Konfiguration in rails_helper.rb, hier ist mein:

Capybara.javascript_driver = :poltergeist 
Capybara.default_driver = :poltergeist 

Erster Screenshot: enter image description here

Zweiter Screenshot: enter image description here

Dritte Screenshot: enter image description here

Vierter Screenshot: enter image description here

+0

haben Sie versucht mit 'page.driver.browser.switch_to.alert.accept'? – fabersky

+0

@fabersky Ich erhalte diese Störung: Ausfall/Fehler: page.driver.browser.switch_to.alert.accept NoMethodError: nicht definierte Methode 'switch_to‘ für # Meinten Sie ? switch_to_frame – Metaphysiker

+0

Es ist kein Systemmodal, also wird 'switch_to.alert' nicht funktionieren. Ziehen Sie auch 'Session # accept_alert' gegenüber treiberspezifischen Methoden vor, wenn es sich um ein Systemmodal handelt. –

Antwort

0

ich es herausgefunden: Die click_button "Ja, es löschen!" passiert zu schnell. Mit einer Verzögerung funktioniert es:

click_button "Delete" 
sleep 5 
click_button "Yes, delete it!" 
+1

Wird Ihre Alarmschaltfläche auf dem Bildschirm animiert? Wenn dies der Fall ist, ist dies wahrscheinlich der Grund, warum der Klick die Schaltfläche verfehlen kann, wenn sich die Schaltfläche bewegt. Überprüfen Sie die Bibliothek, die Sie für die Benachrichtigungen verwenden, und prüfen Sie, ob Sie Animationen in der Testumgebung deaktivieren können. –

Verwandte Themen