In my rails application, I have a page with a link that execute a javascript function :
<%= link_to_function("A开发者_如何学运维dd an address", "add_fields(this)".html_safe) %>
In my cucumber feature I have :
And I press "Add an address"
And the message I get is :
Capybara::ElementNotFound: no button with value or id or text 'Add an address' found
I'm probably missing something, but I can't find what it is..
You should do one, and only one, of the following:
- Rename your submit button to 'Create'
- Change your test to 'And I press "Save"'
Add to your button an id, and also change the test, like this:
view
= f.submit 'Save', :id => :footest
And I press "foo"
Solved by joaomilho:
You should do one, and only one, of the following:
Rename your submit button to 'Create' Change your test to 'And I press "Save"' Add to your button an id, and also change the test, like this:
view = f.submit 'Save', :id => :foo
test And I press "foo"
1 scenario (1 passed) 3 steps (3 passed) 0m2.510s
Same behavior here, I'm using:
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
Step:
When /^(?:|I )press "([^"]*)"(?: within "([^"]*)")?$/ do |button, selector| with_scope(selector) do
click_button(button)
selenium.wait_for_page_to_load
end
end
View New:
%h1 New post
= render 'form'
= link_to 'Back', posts_path
Error:
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'
I believe you want
And I follow "Add an Address"
Sebastian: Try to add an id to your link, and reference it in your test.
Wasn't the original problem that you were creating a link but trying to press a button?
Read the capybara docs carefully, and you'll see the methods are different.
精彩评论