使用 Capybara Webkit 测试 js 确认对话框 Rspec

testing js confirmation dialogs using Capybara Webkit Rspec

我做噩梦试图测试一个简单的 JS 弹出删除确认。 "modal"这里是"JS confirmation pop-up"

的另一种说法

我的问题似乎与这个相同 Undefined method accept_modal for Capybara::Webkit::Driver

但答案建议使用过时的 webkit gem 1.1.0。但那是最新的gem?

subject { page }

it "should.....",
 :type => :feature,
 :driver => :webkit,
 :js => true do

.....

page.accept_confirm do
click_button("Delete")
end

.....

但测试崩溃并显示错误消息

 Failure/Error: page.accept_confirm {}

 NoMethodError:
   undefined method `accept_modal' for #<Capybara::Webkit::Driver:0x000000078cc010>

"Undefined method accept modal" !?!?!这是有人想要使用 Webkit 的一个基本原因,因此必须有一个解决方案。有什么建议么?这是个常见的问题吗。使用 Webkit 的人多吗?

在此先感谢任何可以帮助解决此问题的人

如链接问题的答案中所述 - 您使用的是 capybara-webkit 的过时版本,可能是因为您已将 capybara 的版本锁定为最新版本capybara-webkit 的最新发布版本不支持。 accept_modal 已添加到 Capybara::Webkit::Driver 版本 1.3.0 左右 - 如果您收到该错误,则说明您使用的是之前的版本。更新到 capybara-webkit 的最新版本(1.14.0 - 这可能需要您退回 capybara 的一个或两个版本),或者如果需要,请使用 capybara-webkit 的主分支使用最新的 Capybara 版本。

可能对你有用:

When(/^I confirm popup$/) do
  page.driver.browser.switch_to.alert.accept
end

我正在使用此步骤在弹出窗口中按下“确定”按钮。