Capybara fill_in只适用于字段ID,为什么?

时间:2014-01-21 10:06:14

标签: ruby-on-rails capybara

在运行我的rspec测试时,我收到了一个错误 Capybara :: ElementNotFound:无法找到字段“名字”

我的rspec测试如下

 describe "with valid information" do
  before do
    puts page.body
    fill_in "First Name",   with: "Matthew"
    fill_in "Email",        with: "user@example.com"
    fill_in "Password",     with: "foobar"
  end

  it "should create a user" do
    expect { click_button submit }.to change(User, :count).by(1)
  end
end

我的表单视图就是这样

<%= form_for(@user) do |f| %>
  <%= f.label :first_name %>
  <%= f.text_field :first_name %>

  <%= f.label :email %>
  <%= f.text_field :email %>

  <%= f.label :password %>
  <%= f.password_field :password %>

  <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
<% end %>

因此,经过几个小时的抨击,我试图替换

fill_in "First Name",   with: "Matthew"

fill_in "user_first_name",   with: "Matthew"

(即使用字段ID而不是名称)

我的问题是为什么这只能用字段id('user_first_name')而不是字段名('First Name')?

1 个答案:

答案 0 :(得分:1)

当您执行human_attribute_name时,Rails会使用f.label :first_name method输出标签文字。

这意味着标签的文字是&#34;名字&#34;,而不是&#34;名字&#34;,以便您需要向Capybara提供的内容。