2017-07-12 2 views
0

Je dois obtenir le texte qui apparaît dans l'alerte pour comparer avec une chaîne de texte qui était prévue par le test. J'utilise Cucumber + Ruby + rspec et Capybara.Obtenir le texte d'Alerte pour comparer avec la chaîne - Concombre + Capybara + Rspec

J'ai essayé ce qui suit:

Then(/^I see the message "([^"]*)"$/) do |mensagemsucesso| 

    TextAlert = page.driver.browser.switch_to.alert.text 
    sleep(5) 
    Expect(textAlert).to eql mensagemsucesso 

End 

Erreur:

No modal dialog is currently open (Selenium::WebDriver::Error::NoSuchAlertError)

Répondre

1

En supposant que vous parlez d'alertes système modales déclenchées par JS alert, confirm, prompt alors vous devez utiliser les méthodes capybara accept_alert, accept_confirm, dismiss_confirm, accept_prompt ou dismiss_prompt-http://www.rubydoc.info/gems/capybara/Capybara/Session#accept_alert-instance_method

Tous ces renverront le texte modal a montré, ou vous pouvez passer dans une chaîne qui sera testé par rapport au texte du modal et soulever une erreur si elle ne correspond pas. Ils ont également besoin de prendre un bloc qui a l'action qui déclenche le modal, donc si vous cliquez sur un lien déclenché votre étape pourrait être quelque chose comme

When /^(?:|I) click "([^"]*)" and accept "([^"]*)"$/ do |link, msg| 
    accept_alert msg do 
    click_link(link) 
    end 
end