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"
答案 0 :(得分:1)
Capybara模态API用于与系统模态交互 - 通过在JS中调用window.alert / confirm / prompt生成 - bootbox模式不是系统模态,它们只是标准的html元素。您可以像页面上的任何其他元素一样与它们进行交互。