2017-01-25 8 views
3

私はdeviseを使用してログインした後、JavaScriptを添付したボタンをクリックしてHTMLを表示します。
<button id="btn_simple_search" class="btn btn-primary btn-md well_button" data-toggle="button">Search</button>
呼び出しは、私は(私は知らない - いくつかのコールバックか何かのように)この機能が完了するまで待つカピバラのテストのために希望
$("#btn_simple_search").click(function(){ $("#simple_search").toggle(500); });Capybara/Poltergeist - JavaScript完了までお待ちください

機能し、私は他のボタンをクリックする前sleep 0.6作るというし、または新しく表示されたHTMLブロックからいくつかのオプションを選択します。 Minitestをテストフレームワークとして使用しています。どうやってするの?

上記のJavaScriptはページに直接埋め込まれています。

答えて

2

カピバラ(all/first以外)ファインダ、マッチャ、およびセッションアクションのデフォルトを、具体的に対処しますあなたが話している問題。デフォルトでは、ページに必要な要素が表示されるまで、Capybara.default_max_wait_time秒待つことになります。これが意味することは、時間を取る予定のアクションを実行し、それが完了するのを待つことを望む場合、フィニッシュを示すために変化するページ上の何かを探すようにカピバラに指示する必要があるということです。表示されるテキストコンテンツを表示するボタンをクリックすると、表示されるテキストコンテンツを探し出すことができます。また、ボタンを見つけると表示されるまで少し待つため、表示されるボタンをクリックするように指示することもできます。

その1つのしわは、ページ上に生き生きとしているアイテムです。ここでの問題は、アイテムが表示されても移動していることです。これは、ページ上の間違った場所をクリックするようなドライバー(特にポルターガイストは、実際には回避できないアーキテクチャー問題のために)を引き起こす可能性があります。そのための最善の解決策は、テストモードでのアニメーションを無効にすることです。これはテストのスピードアップにもなりますが、アニメーションを生成するライブラリに依存します。

1

あなたはコンテンツがページに表示されるまで待機カピバラさんマッチャーhave_contentを使用することがあります。待機/再試行の振る舞いに

expect(page).to have_content("Text from your hidden block here") 
# click other button 
関連する問題