私は要求仕様書を書いています...私はカピバラを使用しています...そして、いくつかのモーダルウィンドウに問題があります。(Capybara)アクセスモーダルウィンドウ
私が実際にテストで望むのは、モーダルウィンドウでポップアップするフォームを入力することです。
モーダルは、Twitterのブートストラップ(http://twitter.github.com/bootstrap/javascript.html#modals)で作成されています。これは一連のトランジションを経ています(ただし、これは私が言うことに関連しているかどうかはわかりません)。
私は同じように、私はウェブ上で発見いくつかの回避策を試してみました:
A)を確認してくださいモーダル負荷
ことを確認するためにwait_until
を使用して)
page.driver.browser.window_handles
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
Bでページを切り替えます
def modal_wrapper_id
'#modal-edit'
end
def modal_visible
wait_until { find(modal_wrapper_id).visible? }
rescue Capybara::TimeoutError
flunk 'Expected modal to be visible.'
end
しかし、私はモーダルウィンドウがアクティブな瞬間にウィンドウハンドルの数をレンダリングすると考えました...
だから私はこのでした:
puts page.driver.browser.window_handles.length.should == 2
をそして私はこれだ:事実上私のモーダルウィンドウが存在しない、私が理解から
Failure/Error: page.driver.browser.window_handles.length.should == 2
expected: 2
got: 1 (using ==)
を。
この件に関するお手伝いをいただければ幸いです。
ありがとうございます。
私はセレンを使用しています! 'Capybara.default_driver =:selenium' – adritha84
あなたの投稿にこれを言及していません。私は何か間違ったことがないので、テストスイートでそのポップアップを実際に呼び出すことを確認します(何かをクリックするなどして、ビジネスロジックを知らない)。また、テスト目的のためだけに、ポップアップアクションを呼び出した後に、いくつかの睡眠を入れることができます。 – socjopata
私は仕様にいくつかの「睡眠」アクションを入れて、さまざまな方法でテストしました...そしてあなたが言ったように、私は間違ったものは見当たりません...しかし、そのモーダルウィンドウへのハンドルが存在しないので、ウィンドウは存在しません。 – adritha84