在Capybara找不到元素

时间:2013-03-23 03:39:05

标签: ruby-on-rails rspec capybara

我一直收到这个错误:

Capybara::ElementNotFound:
       cannot fill in, no text field, text area or password field with id, name, or label 'Morning' found.

我已经重置了spork,完成了一个完整的数据库重置,尝试为表单元素分配一个ID,等等。这可能是什么问题?

days_controller_spec.rb

require 'spec_helper'

describe DaysController do

  describe "New" do

    describe "with valid information" do

      it "should create a new entry" do
        visit 'days#new'
        fill_in "Morning", with: "Test"
        click_button "Submit"
      end
    end
  end
end

days_controller.rb

<%= form_for @day do |f| %>

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

  <%= f.button :submit %>
<% end %>

2 个答案:

答案 0 :(得分:2)

看起来你的应用正在使用JavaScript。使用capybara,您需要在处理JS页面的块中添加:js => true选项。

尝试:

it "should create a new entry", :js => true do

在尝试fill_in字段之前,您可能还需要先渲染表单。

另外,我建议您查看capybara的集成DSL。详细了解here

答案 1 :(得分:0)

事实证明语法是正确的,但问题是测试是在错误的RSpec规范文件中。当我将这个测试交换到integration_test文件时,它运行得很好。