从警报中获取文本以与字符串进行比较 - Cucumber + Capybara + Rspec
Get text from Alert to compare with string - Cucumber + Capybara + Rspec
我需要获取出现在警报中的文本,以便与测试预期的文本字符串进行比较。
我正在使用 Cucumber + Ruby + rspec 和 Capybara。
我尝试了以下方法:
Then(/^I see the message "([^"]*)"$/) do |mensagemsucesso|
TextAlert = page.driver.browser.switch_to.alert.text
sleep(5)
Expect(textAlert).to eql mensagemsucesso
End
错误:
No modal dialog is currently open
(Selenium::WebDriver::Error::NoSuchAlertError)
假设您正在谈论由 JS alert
、confirm
、prompt
触发的模态系统警报,那么您需要使用水豚方法 accept_alert
、accept_confirm
、dismiss_confirm
、accept_prompt
或 dismiss_prompt
- http://www.rubydoc.info/gems/capybara/Capybara/Session#accept_alert-instance_method
所有这些都将 return 模态显示的文本,或者您可以传入一个字符串,该字符串将根据模态的文本进行测试,如果不匹配则引发错误。他们还需要采取一个具有触发模态的动作的块,因此如果单击 link 触发它,您的步骤可能类似于
When /^(?:|I ) click "([^"]*)" and accept "([^"]*)"$/ do |link, msg|
accept_alert msg do
click_link(link)
end
end
我需要获取出现在警报中的文本,以便与测试预期的文本字符串进行比较。
我正在使用 Cucumber + Ruby + rspec 和 Capybara。
我尝试了以下方法:
Then(/^I see the message "([^"]*)"$/) do |mensagemsucesso|
TextAlert = page.driver.browser.switch_to.alert.text
sleep(5)
Expect(textAlert).to eql mensagemsucesso
End
错误:
No modal dialog is currently open (Selenium::WebDriver::Error::NoSuchAlertError)
假设您正在谈论由 JS alert
、confirm
、prompt
触发的模态系统警报,那么您需要使用水豚方法 accept_alert
、accept_confirm
、dismiss_confirm
、accept_prompt
或 dismiss_prompt
- http://www.rubydoc.info/gems/capybara/Capybara/Session#accept_alert-instance_method
所有这些都将 return 模态显示的文本,或者您可以传入一个字符串,该字符串将根据模态的文本进行测试,如果不匹配则引发错误。他们还需要采取一个具有触发模态的动作的块,因此如果单击 link 触发它,您的步骤可能类似于
When /^(?:|I ) click "([^"]*)" and accept "([^"]*)"$/ do |link, msg|
accept_alert msg do
click_link(link)
end
end