微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Capybara :: ElementNotFound:无法在没有webrat的情况下找到xpath“/ html”

我不能让Capybara在我的许多集成测试中工作.

当我访问某些页面时,我得到以下html:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

因此,当我尝试使用has_content()选择器时,它会引发以下错误

Failure/Error: page.should have_content("HELLO")
 Capybara::ElementNotFound:
   Unable to find xpath "/html"

我可以访问的应用程序的某些页面很好,但其他一些我不能.甚至有些页面可以在某些地方使用,而不是在其他地方使用:

require 'spec_helper'

describe HomeController do

  it "shows the website description" do
    visit root_path
    puts page.html.length # ==> 108 (no html)
    ...
  end
end



require 'spec_helper'

describe FlowsController do

  it "should do stuff" do
    visit root_path
    puts page.html.length # ==> 4459,works even if the exact same one didn't work in home_controller_spec! 
    visit flows_path
    puts page.html.length # ==> 3402,works
    visit new_user_session_path
    puts page.html.length # ==> 3330,works
    within("form#new_user") do
      fill_in 'Email',:with => 'email@example.com'
      fill_in 'Password',:with => 'password'
      click_on 'Sign in'
    end
    puts page.html.length # ==> 108,No html
  end
end

我在this post中读到,这是在同时使用Capybara和webrat时可能发生的错误.但我根本不使用webrat,我仍然得到错误……

这是我的Gemfile:

source 'https://rubygems.org'

gem 'rails','3.2.6'

gem 'pg'
gem 'thin'
gem 'devise'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails','~> 3.2.3'
  gem 'coffee-rails','~> 3.2.1'

  gem 'uglifier','>= 1.0.3'
end

# Add rspec for testing
group :test,:development do
  gem "rspec-rails","~> 2.0"
  gem "capybara"
  gem "factory_girl_rails"
end

gem 'jquery-rails'

解决方法

尝试传递一个String来描述,而不是Controller类

describe "whatever" do
  ...
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐