2011-03-08 17 views
1

私はCapybaraテストには新しく、いくつかの問題を抱えています。Capybaraがjavascriptを見つけられない

は、私が実行しようとしていますシナリオを持っており、これは、ステップの実装です:私は、XPath、CSSでこのリンクにアクセスしようとしました、そして同様within実装を試してみました

When /^I select the signin link$/ do 
    click_link 'Sign in' 
end 

。カピバラはそれを見つけることができないと思われ、すべての場合でCapybara::ElementNotFoundの例外を返します。

JavaScriptを使用せずにウェブページを読み込むと、リンクが表示されず、カピバラがそれを見つけることができないのかどうか疑問に思っています。私はtriggerメソッドを見つけましたが、どのように動作するのかは不明です。誰かがtriggerという実用的な例を持っているのでしょうか?

答えて

3

このテストを実行するには、セレンのwebdriverを使用していますか? javascriptをサポートするドライバを使用せずに、特定の要素を表示するためにjavascriptが必要なシナリオを実行しようとしているようです。あなたの.featureファイルで

あなたがしなければならないすべては、シナリオの前にこの行を追加します:

@javascript 
Scenario: My Scenario 
    When blah blah blah 
    ... 

@javascriptタグは、テストを実行するために、セレンwebdriverをを使用するようにカピバラを伝えます。それはfirefoxを起動し、テストを通過する - すべてのjavascriptの機能を動作させる。これにより、テストがかなり遅くなるので、ajax-yおよびjavascript-yの動作をテストするために絶対に必要なときにのみ使用してください。

それはまだあなたは、この手順を使用することができます動作しない場合:

Then show me the page 
When I select the signin link 

あなたの検査の喜びのために、そのページの現在の状態では、新しいブラウザにあなたのためのページを開きます。

+0

ありがとうございます。私の頭の中で(何らかの理由で)私はカピバラが魔法のようにブラウザを開くことを知っていると仮定しました。私はfirefoxをインストールし、セレンのwebdriver gem(jruby -S gemはselenium-webdriverをインストールします)を組み込み、env.rbファイルを変更しました( 'selenium-webdriver'が必要です)。 – Rebecca

+0

私はカピバラがそれを必要とすると思う。キュウリをインストールするとき、私はちょうど--capybaraコマンドを使いました。それは "ちょうどうまくいった"ため、セレン - ウェブドライバは必要ではありませんが、確かにそれを使うテストがあります。満足していれば、この回答を正しいものとして受け入れてください:) – nzifnab

+0

@Rebeccaあなたのテストはすべてjavascriptに依存するならば、これをあなたの 'features/support/env.rb'に追加することができます。' @javascript 'どこにでもタグ:' Capybara.default_driver =:selenium' –

関連する問題