2017-06-23 6 views
0

`なしでは動作しません、私はいくつかのJS発生URLをトリガし、新しいウィンドウで開きますボタンをクリックするスペックを持っている:カピバラ - within_window` `とスペックがsleep`

new_window = window_opened_by { find('#search_postcode').click } 
within_window new_window do 
    expect(page.current_url).to include('postcode.nl') 
end 

これはしていません作業。私は次のエラーを取得する:私はsleep 1を追加するとき

Failure/Error: expect(page.current_url).to include('postcode.nl') 
     expected "about:blank" to include "postcode.nl" 

はしかし、スペックは渡し:

within_window new_window do 
    sleep 1 
    expect(page.current_url).to include('postcode.nl') 
end 

sleepせずにこの作業を取得することが可能ですか?

答えて

1

新しいウィンドウhtml内のセレクタを確認できます。 Capybaraは要素が表示されるまでdefault_waittimeを待つ必要があります。同様に:あなたが待っている/再試行する動作を含んでおり、一般的に(時間の99.9%)RSpecのを使用してより優先されなければならない提供have_current_pathマッチャーを使用することができる要素の存在をテストすることなく、

within_window new_window do 
    expect(page).to have_selector('.your_class_here') 
    expect(page.current_url).to include('postcode.nl') 
end 
0

はとテキストマッチングを提供しましたcurrent_url

within_window new_window do 
    expect(page).to have_current_path(/postcode\.nl/, url: true) 
end