2012-06-20 10 views
11

私はCucumber、RSpec、Selenium、Railsを使ってBehavior Driven Developmentに挑戦しています。RailsとSelenium:ブラウザでテストの実行を停止/一時停止する方法は?

私は自分の設定をSeleniumでテストする準備ができていて、Firefoxのポップアップを見て自分のシナリオを自動的に実行するのは面白いです。しかし、私がしたいことの1つは、特定の時点で実行を一時停止または停止することです。そのため、ある時点でSeleniumが見ていることを調べることができます。

私はsave_and_open_pageコマンドを知っていますが、フォーマットされていないプレーンなHTMLしか表示されません。だから、おそらくstop_executionメソッドまたは何かがセレンを停止するブラウザを終了せずにですか?

答えて

25

pryをインストールし、テスト中に一時停止したい場所にbinding.pryと入力します。完了したらCtrl + Dを入力するか、REPLにexitと入力して実行を継続します。

+0

はい、これは本当に素晴らしい答えです!私はすでにそれをやっています、私のこの古い質問に私を向かわせてくれてありがとう。 :)ところで、 'pry-debugger'は非常に基本的なデバッガ機能も提供します。 –

+0

これは、私がbinding.pryをビューに張っている場合を除いて、私にとってはうまくいきます。任意のアイデアビューで実行を一時停止する方法?私は本当にこれをする必要はないはずですが、それは本当に便利なことがあります。 – peteretep

0

は、テスト実行を使用すると、実行をstop/pauseする時間

+0

ありがとうございましたこれは良いヒントですが、私の*** _ steps.rbでセレンは利用できないようです: 'のための'未定義のローカル変数またはメソッド 'selenium' NameError) ' –

+0

oops .. javaを使用します。 selenium.sleep()のコードでは、セレンはオブジェクト名です。それに応じてそれに応じて修正する必要があります:) – Acid

+0

'page.driver.sleep(5000)'で試しましたが、 'privateメソッド' sleep 'は#(NoMethodError) 'を呼び出しました。 –

1

使用デバッガの指定された量を待つようになります これをselenium.sleep(ミリ秒)を使用してみてください。

あなたが右 コマンドラインをクリックすることができますし、 stop/pause実行に セット/クリアスタートポイントを選択することができセレンIDEで

または

1

さて、私はruby-debug19(Ruby 1.9.3用)をインストールして、ちょうどキュウリのステップのどこかにブレークポイントを設定することで動作させました。

http://rails.vandenabeele.com/blog/2011/12/21/installing-ruby-debug19-with-ruby-1-dot-9-3-on-rvm/

別のオプションは、私はそれがルビーに依存しているかどうかわからない(「次に停止し、私はデバッグしてみましょう」基本的に同じことをしているようだステップを追加カピバラ、放火犯の宝石を使用することです - デブ宝石)。

16

か、単に:

visit '/' 
sleep(inspection_time=5) 
visit '/dreamland' 
+2

"これはあなたに2つの方法をかけることができます。まず、睡眠時間を十分に長く設定して、応答を得るのに十分な時間がかかるようにします。あなたが睡眠を超越させるような環境の変化があります - あなたは虚偽の失敗を起こすでしょう。私はこのような裸の睡眠を決して使用しないことを強くお勧めします。 http://martinfowler.com/articles/nonDeterminism.html – Hugo

+1

これはテストにはお勧めできません。検査専用です。このような厄介な何かを持っていれば、検査の後にそれを取り除くことを強いられるでしょう。デバッグのための '' p'の種類か '' console.log' –

0

すべての答えは、新しい宝石をインストールしたりしても最善のアプローチではありません睡眠を設定する必要があります。あなたがステップあなたの任意の場所にこのラインを置くことができます:あなたがそうy(はい)

を入力するまで

ask "Continue?" 

をそれは、例えば、それは次のようになり、実行を停止します。

expect(page).to have_button('Submit') 
ask "Continue?" 
click_button('Submit') 
関連する問題