在我的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
我可能遗漏了一些东西,但我找不到它是什么......
答案 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)
您创建链接但尝试按按钮的原始问题不是?
仔细阅读水豚文档,你会发现方法不同。