2013-03-23 121 views
2

我不断收到此错误未找到:元素在水豚

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

我已经复位叉勺,做了充分的分贝复位,试图分配一个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 %> 
+0

您是否添加了'save_and_open_page'命令来确保您位于正确的页面? – depa 2013-03-23 03:41:06

+0

@mdepolli是的,它正在导航到正确的页面。我刚刚创建了该应用程序。此表单页面是迄今为止创建的两个页面之一。 – bwobst 2013-03-23 03:44:09

回答

2

看起来像你的应用程序使用的JavaScript。使用水豚你需要添加:js => true选项到处理JS页面的块。

尝试:

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

您可能还需要为这样的形式试图fill_in现场之前被渲染。

此外,我建议你检查水豚的集成DSL。阅读更多关于它的信息here

+0

结果显示“:js => true”不是答案,但是您提到的“集成”让我记得尝试将测试放在集成测试规范中。完美工作。 – bwobst 2013-03-23 04:07:30

0

原来,这种语法是正确的,但问题在于测试是在错误的RSpec spec文件中。当我将这个测试换成一个integration_test文件时,它完美运行。