使用Capybara-Webkit与bootbox模式交互

时间:2015-12-01 23:45:39

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

Gem版本:Rails 4.1.14.rc2,Capybara 2.5.0,capybara-webkit 1.7.1

我们的应用程序使用bootbox模式来表达某些输入的软验证。我试图使用accept_confirm with block方法捕获模式,然后Webkit自动接受它:

modal = accept_confirm do
  fill_in " Date of birth", with: "12/31/2015"
  click_on "Update Spouse"
end

expect(modal).to # have some sort of message

我在回复时收到此错误:

 Failure/Error: modal = accept_confirm do
 Capybara::ModalNotFound:
   Timed out waiting for modal dialog

有没有人有使用Webkit和bootbox模式的经验?

*****更新解决方案*****

这是一场竞赛。 Webkit比bootbox移动得更快,并且由于某种原因它没有使用capybara的等待时间。在触发bootbox模式的事件之后添加sleep 0.5可以使测试正常运行。见下面的例子:

fill_in " Date of birth", with: "12/31/2015"
click_on "Add benefit"
sleep 0.5

expect(page).to have_content "some warning message..."
click_on "Make Correction"

sleep 0.5
fill_in " Date of birth", with: "12/31/1905"
click_on "Add benefit"

sleep 0.5
expect(page).to have_content "some warning message..."
click_on "Make Correction"

1 个答案:

答案 0 :(得分:1)

Capybara模态API用于与系统模态交互 - 通过在JS中调用window.alert / confirm / prompt生成 - bootbox模式不是系统模态,它们只是标准的html元素。您可以像页面上的任何其他元素一样与它们进行交互。