ruby-on-rails - 禁用浏览器前进后退 - 阻止浏览器后退
如何模拟Capybara中的浏览器后退按钮? (4)
我们的电子商务网站上存在一个问题,即用户偶尔会点击“结帐”两次,并且他们的卡会被收取两次费用。
这是一个常见的错误并且易于修复,但我想在我们的水豚设置中测试解决方案。 一旦我调用click_button('checkout'),我是否可以假装我是用户点击浏览器后退按钮然后再次调用click_button('checkout')?
如果您通过capybara-webkit
gem使用webkit作为page.driver.go_back
javascript驱动程序, 则可以使用page.driver.go_back
。 对于scenario
还需要:js => true
。
您可能想尝试:
When(/^I go back$/) do
page.evaluate_script('window.history.back()')
end
这将需要在一个支持javascript的驱动程序中运行senario(selenium / celerity / akephalos)
至少与capybara
2.10
和selenium-webdriver
2.53
工作:
When(/^I go back$/) do
page.go_back
end
它基本上是jbarr's答案的捷径。 有关详细信息,请参阅go_back
上的go_back
文档 。
顺便说一句:对应部分是page.go_forward
。
谢谢! 这个问题和答案对我帮助很大!
只是为了添加@Jake Mallory的答案,selenium现在是capybara的一部分,你可以通过添加: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?view=asciicast