Rspec have_css、have_选择器和have_字段之间有什么区别?

Rspec have_css、have_选择器和have_字段之间有什么区别?,rspec,Rspec,我有这个html.erb Rails表单: <h1 class=new_vendor_header>New Vendor Form</h1> <%= form_for(@vendor) do |f| %> <%= f.label :name %> <%= f.text_field :name, placeholder: "ex: Jeff" %> <%= f.submit "Submit" %> <% e

我有这个html.erb Rails表单:

<h1 class=new_vendor_header>New Vendor Form</h1>

<%= form_for(@vendor) do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name, placeholder: "ex: Jeff" %>
  <%= f.submit "Submit" %>
<% end %>
但这并不是:

expect(page).to have_field('input[placeholder="ex: Jeff"]')
expect(page).to have_selector('input[placeholder="ex: Jeff"]')
这并不是:

expect(page).to have_field('input[placeholder="ex: Jeff"]')
expect(page).to have_selector('input[placeholder="ex: Jeff"]')
选择器指的是HTML选择器,所以它指的是HTML元素? 我曾想过寻找css,但它似乎做得更多。以下是备忘单中的示例:

response.body.should have_css("input", :count => 3) #True if there are 3 input tags in response
这似乎在寻找输入HTML选择器

那么,区别是什么?为什么在我的示例中,其他两个失败了?

来自Docs
have\u css
将调用
has\u selector
作为参数,因为
has\u selector
可以处理
css
xpath

def have_css(css, options={})
      HaveSelector.new(:css, css, options)
end

请注意,
have_css
have_selector
不是RSpec本身的一部分,而是由