idをsearch
に設定したdiv内のフォームをラップするだけでなく、フォームのさまざまな部分でIDを設定しようとしました。結果は常に同じです。Capybaraがフィールドを見つけることができません "検索"
スペック/機能/ 02_post_spec.rb
scenario 'search for post title' do
fill_post_form(post3)
fill_in "search", with: post3.title
click_button("Search")
expect(page).to_not have_content(post1.title)
expect(page).to_not have_content(post2.title)
expect(page).to have_content(post3.title)
end
スペック/ spec_helper.rb
def fill_post_form(post)
visit new_post_path
fill_in 'Title', with: post.title
fill_in 'Body', with: post.body
click_button 'Create Post'
end
この意志redirect_to post_path(post)
ビュー/記事/ index.html.erb
<%= form_tag(posts_path, method: :get, class: "block") do %>
<div class="form-group">
<div class="input-group">
<%= text_field_tag :search, params[:search], class: "form-control", id: "search" %>
<span class="input-group-btn">
<%= submit_tag "Search", name: nil, class: "btn btn-default" %>
</span>
</div>
</div>
<% end %>
カピバラ出力
Failure/Error: fill_in "search", with: post3.title
Capybara::ElementNotFound:
Unable to find field "search"
ページのフォームの生のHTMLを見てみましょう...フィールドが少しだけ異なるものと呼ばれる可能性があります。あなたがidに基づいて試しているのであれば、おそらく 'fill_in '#search''またはそれに類するものも必要でしょう。 –
@TarynEast 'fill_in'は入力される入力要素の名前、id、または関連するラベルテキストで検索します - CSSセレクタを受け付けないので' fill_in 'search'、... 'not #search –