35

e コマース サイトで、ユーザーが [チェックアウト] を 2 回押して、カードに 2 回請求されることがあるという問題があります。

これは十分に一般的なバグであり、簡単に修正できますが、カピバラのセットアップで解決策をテストしたいと思います. click_button('checkout') を呼び出したら、ブラウザの [戻る] ボタンを押したユーザーのふりをして、もう一度 click_button('checkout') を呼び出すことはできますか?

4

5 に答える 5

40

あなたは試してみたいかもしれません:

When(/^I go back$/) do
  page.evaluate_script('window.history.back()')
end

これには、javascript 対応ドライバー (selenium/celerity/akephalos) でシナリオを実行する必要があります。

于 2011-02-22T04:08:38.443 に答える
9

gemを介してカピバラ JavaScript ドライバーとして webkit を使用している場合page.driver.go_backは、を使用できます。にも必要です。capybara-webkit:js => truescenario

于 2015-05-06T21:23:27.927 に答える
1

私はWebratでこの方法を使用しました。カピバラでも同様のことがうまくいくと確信しています。

When(/^I go back$/) do
  visit request.env['HTTP_REFERER']
end

補足:「redirect_to :back」メソッドは、何らかの理由で機能しませんでした。

于 2010-10-08T14:06:40.027 に答える
0

ありがとう!この質問と回答は私を大いに助けてくれました!

@Jake Malloryの回答に追加するだけで、セレンは現在カピバラの一部であり :js => true 、これらの2つのチュートリアルで説明されているように、追加することで(おそらくさらにいくつかの調整を加えることで)テストで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

于 2012-05-08T17:20:36.517 に答える