私は、統合テストのために私のレールアプリケーションをテストするためにcapybaraを使用しています。 私のアプリケーションには、多くのLightboxとAjaxとjs呼び出しがあります。カピバラのシナリオで待機条件を追加するには?
@javascript
Scenario: I agree functionatilty
Given I go to the create account page
When I click on button which is given as image "lnkTerms2"
And I follow "i_agree"
Then I go to the create account page
ここで上記のコードlnkTerms2であるとライトボックスを開くには、JS関数を呼び出すのに役立つだろうID。 と私はエラーを取得しています問題はwebdriverを中に呼び出され、この関数である
Element is not currently visible and so may not be interacted with (Selenium::WebDriver::Error::ElementNotDisplayedError)
[remote server] resource://fxdriver/modules/atoms.js:9519:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:256:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:305:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:320:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:197:in `unknown'
(eval):2:in `send'
(eval):2:in `click_link'
./features/step_definitions/web_steps.rb:300:in `/^I click on button which is given as image "([^"]*)"$/'
features/Sign_up_process.feature:61:in `When I click on button which is given as image "lnkTerms2"'
として、それはJavaScriptとAjaxの呼び出しをロードする時間が取得されていません。 ライトボックスが開いていません。 だから私には何か解決策を提案してください。また
私はそれがJSをロードするための時間を取得して、それが正常に動作しているラインに4〜5文の後
When I click on button which is given as image "lnkTerms2"
を書くと仮定します。 AJAX試みを待つステップの後のポーズのために
これは良い解決策ではありませんが、テスト実行に強制的な遅延を追加します。再使用すると、時間がかかることがあります。 この問題を解決する適切な方法は、要素が表示されるまで待つことです。 – Benja
固定スリープの任意の形式は、シナリオが実際にその特定の時間量を待つことを含むユーザーエクスペリエンスに関するシナリオでない限り(シナリオがディスプレイを更新するのを待つのではなく、シナリオから値を取っているとしても大したことではありません。例えば、 '同期') –