ajax 経由で結果を読み込むページに Select2 要素があります。これを capybara/rspec (ポルターガイスト ドライバーを使用) でテストしたいのですが、Select2 要素は実際には隠しフィールドとして開始され、<ul>
結果が処理されるとデータが入力されるため、通常のselect
,fill_in
またはchoose
ヘルパーは機能しません。
私が今持っているのは次のようなものです
it "should have a search field for events" do
click_link "Select an Event" # this works as expected
within('.select2-container') do # works
find('.select2-search input').set(event.description[0,5]) # won't work!
find(:xpath, "li[text()='#{event.description}']").click
end
click_button "Search"
page.should have_content("Displaying all 2 photos")
end
上記の 4 行目、明らかにカピバラは要素を見つけることができますが、値は変更されず、Select2 は ajax 呼び出しを行いません。fill_in
(検索フィールド要素にラベル、id、または名前の属性がないため、通常は使用できません)