And*_*ian 14 rspec capybara ruby-on-rails-3
我正在尝试使用capybara + rspec并得到此错误:无法找到字段"Name"(Capybara :: ElementNotFound)
这是我的表格:
%h2 Sign up
= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => {:class => 'form-vertical' }) do |f|
= f.error_notification
= display_base_errors resource
= f.input :name, :autofocus => true
= f.button :submit, 'Sign up', :class => 'btn-primary'
= render "devise/shared/links"
Run Code Online (Sandbox Code Playgroud)
这是我的user_steps.rb
When /^I sign up with valid user data$/ do
create_visitor
sign_up
end
def create_visitor
@visitor ||= { :name => "Test visitor"}
end
def sign_up
visit '/users/sign_up'
fill_in "Name", :with => @visitor[:name]
click_button "Sign up"
end
Run Code Online (Sandbox Code Playgroud)
怎么了????
在我看来,您正在寻找一个字段 label Name
,但您的 name 字段没有标签,因此您可能需要使用该字段的 ID 或可能是的名称:
"#{resource_name}[name]"
此外,正如@nmott 在他的评论中所说,您应该尝试使用,save_and_open_page
以便您可以实际查看页面,但是,请注意您需要 launchy gem 才能使用此方法。
此外,您可能会发现您甚至不在正确的页面上。在测试注册页面以外的页面时,我通常遇到的问题是我被重定向了并且不知道。因此,在使用之后visit
,您还应该使用assert_template
来确保您在正确的页面上。
我遇到了这个问题并意识到Capybara 过滤掉了隐藏的字段 -我的元素属于多标签页面中的非活动标签(隐藏).我刚刚通过了:可见的arg并将其设置为false,瞧!该元素被发现.
fill_in "content", with: 'foo bar', visible: false
Run Code Online (Sandbox Code Playgroud)
要么
find('#item_content', visible: false).set 'foo bar'
Run Code Online (Sandbox Code Playgroud)
尝试从表格本身缩小范围
within("form#whatever_form_id") do
fill_in "Name", :with => @visitor[:name]
click_button "Sign up"
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15328 次 |
最近记录: |