- 更新日: 2014年4月16日
- RSpec
Capybara で同名の CSS セレクタを持つ複数の HTML 要素から任意の要素を見つける
スポンサーリンク
同じ名前の CSS セレクタを持つ HTML 要素が複数ある場合に、Capybara で任意の要素を見つける方法。
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
— 環境 —
rails-4.0.1
rspec-rails-2.14.0
capybara-2.2.0
同名クラスの任意の button を Submit する例
例えば、以下のように submit-button という名前のCSSクラスの要素が複数あり、任意の何番目かの要素の button を Submit したい場合。
1 2 3 4 5 6 7 8 9 10 11 |
<div class="submit-button"> <button class="btn btn-default">Submit</button> </div> <div class="submit-button"> <button class="btn btn-default">Submit</button> </div> <div class="submit-button"> <button class="btn btn-default">Submit</button> </div> |
first または page.all(‘セレクタ’)[n] を使う
一番最初の button を Submit する場合は、first を使います。
1 |
first(".submit-button").click_button("Submit") |
2番目、3番目の要素の場合は、page.all で要素を全て見つけ出して、インデックスで指定するのがお手軽っぽいです。配列なので、1 が2番目の要素。
1 2 |
page.all(".submit-button")[1].click_button("Submit") # 2番目の要素 page.all(".submit-button")[2].click_button("Submit") # 3番目の要素 |
以上です。XPath で要素を指定するのはできるだけ使いたくない、XPath 苦手です。
- – 参考リンク –
- ruby – How to click first link in list of items after upgrading to Capybara 2.0? – Stack Overflow
- How to click on the second link with the same text using Capybara in Rails 3? – Stack Overflow
- cucumber – How do I find the first checkbox in Capybara? – Stack Overflow
スポンサーリンク
私は Rails のテストフレームワークには RSpec を使っています。サーバーのテスト用に Serverspec もおすすめです。
>> 次の記事 : RSpec で特定のサンプルのみテストを実行する
<< 前の記事 : ユーザーがアカウント設定ページでロケールを変更させるテスト
- RSpec の関連記事
- FactoryGirlをSpringと共に使う時の注意
- 複数モデルのpost :createをテストするRSpecコード(Controller Spec)
- RSpec3でTime.nowをスタブ化(stub)
- RSpecでJSONによるPOSTリクエストをテスト
- RSpec & Capybara の雑感
- RSpec+Capybaraで同名の複数要素の並び順をテストする
- RSpec3ではrails_helper.rbがrequireされる
- Capybara + Launchy で RSpec テストをブラウザで確認
- CapybaraのwithinをRSpecで使う
- Serverspec(RSpec)のテスト出力に色を付けて見やすくフォーマット
Leave Your Message!