💯
RailsのCapybaraでダイアログのボタンを確実にクリックする方法
この記事の概要
この記事では、RailsアプリケーションのテストにおいてCapybaraを使用し、ダイアログ内のボタンを確実に押す方法として以下、説明する記事です。
- ダイアログの表示を待機してからボタンを押す方法
- 特定の要素内での操作を限定する方法
- ダイアログの表示状態を確認する方法
コード例
以下に、ダイアログ内のボタンを確実に押すためのCapybaraコードの例を示します。
# ダイアログが表示されるまで待つ
expect(page).to have_css('.modal-dialog', visible: true)
# 「あとにする」ボタンをクリック
within('.modal-dialog') do
click_button 'あとにする'
end
# ダイアログが閉じられたことを確認
expect(page).to have_css('.modal-dialog', visible: false)
メソッドの説明
within
within
メソッドは、特定の要素内でのみ操作やアサーションを行うためのスコープを設定します。
within('#admin') do
fill_in 'Name', with: 'Admin'
end
このように、特定のセレクタ(この場合は #admin
)内での操作を限定できます。これにより、同じ名前の要素が複数ある場合でも、意図した要素を正確に操作できます。
expect(page).to have_css
have_css
マッチャーは、指定したCSSセレクタに一致する要素がページ上に存在するかをチェックします。
expect(page).to have_css('h1#title', text: 'My Title')
visible: true/false
オプションを使用することで、要素が表示されているか確認できます。例えば:
expect(page).to have_css('.modal-dialog', visible: true)
これは、.modal-dialog
クラスを持つ要素が表示されていることを確認します。
まとめ
- Capybaraの
within
メソッドを使用することで、特定の要素内での操作を限定できます。 -
expect(page).to have_css
を使用して、要素の存在や可視性を確認できます。 - これらの機能を組み合わせることで、ダイアログ内のボタンを確実にクリックできます。
Discussion