使用Capybara Webkit 1.3.1测试警报对话框文本
我希望使用Capybara Webkit在警报对话框中测试文本。 我知道accept_js_confirms
和reject_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