Rspec Capybara在功能测试中找不到字段

Rspec Capybara在功能测试中找不到字段,rspec,capybara,Rspec,Capybara,你能帮我解决这个问题吗 在以下功能测试中,Capybara找不到“article[title]”和“article[body]”字段: feature "Creating Articles" do scenario "A user creates a new article" do visit '/' click_link("New Article") fill_in "article[title]", with: "title" fill_in "a

你能帮我解决这个问题吗

在以下功能测试中,Capybara找不到“article[title]”和“article[body]”字段:

feature "Creating Articles" do

scenario "A user creates a new article" do
    visit '/'

    click_link("New Article")
    fill_in "article[title]",     with: "title"
    fill_in "article[body]",      with: "article body"
    click_button "Create Article"

    expect(page).to have_content "title"
    expect(page).to have_content "article body"

end
这两个字段在源代码页面中显示为

但是RSpec一直显示这个错误

   Capybara::ElementNotFound:
   Unable to find field "article[title]"

谢谢你的帮助

使用
fill\u in
描述符的id可能会更好
fill_in
使用描述符作为其参数,因此以下任一形式都应适用:

fill_in "article_title",     with: "title"
fill_in "article_body",      with: "article body" 


有关各种描述符的有用说明,请参见此。我将此书签保存在类似您的情况下。

既然您在这两个页面上都定义了id,为什么不尝试:在“article\u title”中填入:“title”&在“body”中填入:“article body”@orion
fill\u in
将按id、名称和,或占位符属性或关联的标签文本,因此切换到id不会有任何区别@rstreet是在测试环境或开发环境中运行时显示的HTML??如果开发环境-add
sleep5;将page.html
放在
单击链接(“新文章”)
之后(第二个链接-不确定为什么要单击它两次),然后查看测试环境中的实际页面源代码。托马斯·沃尔波尔说:“可能性在于你认为不存在的领域或它正在被隐藏。”。我在上面的代码中没有包含工厂和登录方法(我认为这是多余的)。在我添加了“sleep 5;puts page.html”之后,它帮助我看到了问题所在,即由于我的工厂采用了错误的方法,水豚无法在页面中通过sign_。谢谢你的帮助!格雷格,问题出在我的工厂里,上面的代码中没有包含这个问题。谢谢你的参考!
fill_in "id=article_title",     with: "title"
fill_in "id=article_body",      with: "article body"