我们的电子商务网站存在一个问题,用户偶尔会点击两次“结帐”,并且他们的卡被收取了两次费用。
这是一个很常见的错误并且很容易修复,但我想在我们的水豚设置中测试解决方案。一旦我调用了 click_button('checkout'),我是否可以假装我是一个点击浏览器后退按钮的用户,然后再次调用 click_button('checkout')?
我们的电子商务网站存在一个问题,用户偶尔会点击两次“结帐”,并且他们的卡被收取了两次费用。
这是一个很常见的错误并且很容易修复,但我想在我们的水豚设置中测试解决方案。一旦我调用了 click_button('checkout'),我是否可以假装我是一个点击浏览器后退按钮的用户,然后再次调用 click_button('checkout')?
您可能想尝试:
When(/^I go back$/) do
page.evaluate_script('window.history.back()')
end
这将需要在支持 javascript 的驱动程序中运行 senario (selenium/celerity/akephalos)
如果您通过gem使用 webkit 作为您的 capybara javascript 驱动程序page.driver.go_back
,则可以使用。还需要为.capybara-webkit
:js => true
scenario
至少capybara
2.10
和selenium-webdriver
2.53
这有效:
When(/^I go back$/) do
page.go_back
end
这基本上是jbarr答案的捷径。有关详细信息,请参阅 上的水豚文档go_back
。
顺便说一句:柜台部分是page.go_forward
。
我在 Webrat 中使用过这种方法。我敢肯定对 Capybara 类似的东西会起作用。
When(/^I go back$/) do
visit request.env['HTTP_REFERER']
end
旁注:无论出于何种原因,“redirect_to :back”方法对我不起作用。
谢谢!这个问答对我帮助很大!
只是为了添加到@Jake Mallory 的答案,硒现在是水豚的一部分,您可以通过添加 :js => true
(可能还有更多的调整)来相当容易地在测试中运行 javascript,如这两个教程中所述:
http://www.opinionatedprogrammer.com/2011/02/capybara-and-selenium-with-rspec-and-rails-3/ http://railscasts.com/episodes/257-request-specs-and-capybara?视图=asciicast