黄瓜,水豚和ElementNotFound

时间:2010-09-01 20:15:40

标签: ruby-on-rails ruby cucumber capybara

在我的rails应用程序中,我有一个页面,其中包含一个执行javascript函数的链接:

<%= link_to_function("Add an address", "add_fields(this)".html_safe) %>

在我的黄瓜特写中,我有:

And I press "Add an address"

我得到的信息是:

Capybara::ElementNotFound: no button with value or id or text 'Add an address' found

我可能遗漏了一些东西,但我找不到它是什么......

5 个答案:

答案 0 :(得分:3)

您应该只做以下一项:

  • 将提交按钮重命名为“创建”
  • 将测试更改为“我按”保存“'
  • 在您的按钮中添加一个ID,并更改测试,如下所示:

    视图
    = f.submit'保存',:id =&gt; :FOO

    测试
    我按“foo”

答案 1 :(得分:2)

由joaomilho解决:

您应该只做以下一项:

将提交按钮重命名为“创建” 将测试更改为'我按“保存” 将按钮添加到您的按钮,并更改测试,如下所示:

视图 = f.submit'保存',:id =&gt; :FOO

测试 我按“foo”

1个场景(1个通过) 3个步骤(3个过去) 0m2.510s

这里的行为相同,我正在使用:

Rails 3 Cucumber / Capybara / Haml

Feature: Manage posts
  In order to [goal]
  [stakeholder]
  wants [behaviour]

  @wip
  Scenario: Register new post             # features/manage_posts.feature:6
    Given I am on the new post page       # features/step_definitions/web_steps.rb:19
    When I fill in "Title" with "title 1" # features/step_definitions/web_steps.rb:40
    And I fill in "Body" with "body 1"    # features/step_definitions/web_steps.rb:40
    And I uncheck "Published"             # features/step_definitions/web_steps.rb:83
    And I press "Create"                  # features/step_definitions/web_steps.rb:27     
    Then I should see "title 1"           # features/step_definitions/web_steps.rb:108
    And I should see "body 1"             # features/step_definitions/web_steps.rb:108
    And I should see "false"              # features/step_definitions/web_steps.rb:108

步骤:

When /^(?:|I )press "([^"]*)"(?: within "([^"]*)")?$/ do |button, selector|   with_scope(selector) do
    click_button(button)
    selenium.wait_for_page_to_load   
    end  
end

查看新内容:

%h1 New post

= render 'form'

= link_to 'Back', posts_path

错误:

 no button with value or id or text 'Create' found (Capybara::ElementNotFound)
      ./features/step_definitions/web_steps.rb:29
      ./features/step_definitions/web_steps.rb:14:in `with_scope'
      ./features/step_definitions/web_steps.rb:28:in `/^(?:|I )press "([^"]*)"(?: within "([^"]*)")?$/'
      features/manage_posts.feature:11:in `And I press "Create"'

_form:

= form_for @post do |f| 
  -if @post.errors.any?
    #errorExplanation
      %h2= "#{pluralize(@post.errors.count, "error")} prohibited this post from being saved:"
      %ul 
        - @post.errors.full_messages.each do |msg|
          %li= msg 

  .field
    = f.label :title
    = f.text_field :title
  .field
    = f.label :body
    = f.text_area :body
  .field
    = f.label :published
    = f.check_box :published
  .actions
    = f.submit 'Save'

答案 2 :(得分:1)

我相信你想要

And I follow "Add an Address"

答案 3 :(得分:0)

Sebastian:尝试在您的链接中添加ID,并在测试中引用它。

答案 4 :(得分:0)

您创建链接但尝试按按钮的原始问题不是?

仔细阅读水豚文档,你会发现方法不同。