使用Capybara Webkit 1.3.1测试警报对话框文本

时间:2014-12-09 16:35:18

标签: ruby-on-rails rspec capybara capybara-webkit

我希望使用Capybara Webkit在警告对话框中测试文本。我知道accept_js_confirmsreject_js_confirms方法,但我希望在执行操作之前评估对话框的内容。例如,在Selenium中,以下工作:

alert = page.driver.browser.switch_to.alert expect(alert.text).to eq t('report_periods.edit.delete_confirmation') alert.accept

我目前正在使用expect(page.driver.confirm_messages).to include t('report_periods.edit.delete_confirmation')来测试同一个对话框的文本,但是,在更新我们的capybara-webkit gem后,我们的测试会输出一个弃用警告:[DEPRECATION] Capybara::Webkit::Driver#confirm_messages is deprecated. Please use Capybara::Session#accept_confirm or Capybara::Session#dismiss_confirm instead.使用其中任何一种方法警告不会测试对话框的内容。

1 个答案:

答案 0 :(得分:3)

accept_confirm和dismiss_confirm只接受或解除模态。

如果你想比较文本,你可以在变量中获取accept_confirm的返回值,然后你可以比较它。

message = accept_prompt(with: 'Linus Torvalds') do
  click_link('Show Prompt About Linux')
end
expect(message).to eq('Who is the chief architect of Linux?')

在这里查看模态:https://github.com/jnicklas/capybara