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

时间:2018-01-26 05:04:14

标签: rspec webkit capybara

我做噩梦试图测试一个简单的JS弹出删除确认。 "模态"这是" JS确认弹出窗口"

的另一个词

我的问题与此问题相同 Undefined method accept_modal for Capybara::Webkit::Driver

但答案提出了一个过时的webkit gem 1.1.0。但那是最新的宝石?

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>

&#34;未定义的方法接受模态&#34; !?!?!这是有人想要使用Webkit的基本原因,因此必须有一个解决方案。有什么建议?这是个常见的问题吗。很多人使用Webkit吗?

提前感谢任何可以帮助解救此问题的人

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

可能对您有用:

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

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