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

我希望使用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. [DEPRECATION] Capybara::Webkit::Driver#confirm_messages is deprecated. Please use Capybara::Session#accept_confirm or Capybara::Session#dismiss_confirm instead. 使用警告中的任何一种方法都不会测试对话框的内容。

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