Rspec has_css,have_selector和have_field有什么区别?

时间:2015-07-22 11:43:15

标签: 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" %>
<% end %>

通过:

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元素? have_css我认为寻找CSS但它似乎做得更多。以下是备忘单中的示例:

response.body.should have_css("input", :count => 3) #True if there are 3 input tags in response

这似乎在寻找输入HTML选择器。

那么有什么区别,为什么其他两个在我的例子中失败?

1 个答案:

答案 0 :(得分:5)

来自文档here have_css会以has_selector作为参数调用css,因为has_selector可以处理css,{{1} },...

xpath