Capybara::ElementNotFound:找不到XPath“/html”

s4n0splo  于 2022-10-15  发布在  Ruby
关注(0)|答案(5)|浏览(139)

我在http://ruby.railstutorial.org/chapters/static-pages上学习Ruby on rails教程时遇到了以下错误

StaticPages Home page should have the content 'Sample App'
 Failure/Error: page.should have_content('Sample App')
 Capybara::ElementNotFound:
   Unable to find xpath "/html"
 # (eval):2:in `text'
 # ./spec/requests/static_pages_spec.rb:7:in `(root)'

我的Gem文件如下

source 'http://rubygems.org'

gem 'rails', '3.0.10'

gem 'jruby-openssl'

gem 'activerecord-jdbcsqlite3-adapter'
group :development, :test do
   gem 'webrat'
   gem 'rspec-rails', ">= 2.10.0"
   gem 'capybara', ">= 1.1.2"
end

如何消除此错误并传递RSpec?源文件

require 'spec_helper'

describe "StaticPages" do

  describe "Home page" do

    it "should have the content 'Sample App'" do
      visit '/static_pages/home'
      # puts page.html
      page.should have_content('Sample App')
    end
  end
end
wqsoz72f

wqsoz72f1#

也许问题出在webrat gem+capybara gem上,试着从你的gem文件中删除webrat。
check this issue

3htmauhk

3htmauhk2#

您可能有一个错误,使页面无法正确呈现。
使用一些调试工具获得帮助:

  • 在您的请求规范内,使用puts page.html在规范期间打印页面内容。
  • 跟踪日志文件(log/test.log)

您能展示一下您的./Spec/Requests/Static_Pages_spec.rb源代码吗?

wwtsj6pe

wwtsj6pe3#

我猜问题最有可能出在这一行上:
visit '/static_pages/home'
运行‘rake routes’找出路径名并使用其中之一。例如,如果您有一条名为‘home’的路由,请使用:
访问Home_Path
如果您想要的路径不存在,请将其添加到config/routes.rb。

r6vfmomb

r6vfmomb4#

今天我犯了同样的错误,但情况不同。我把include Capybara::DSL包括在spec_helper.rb(rails_helper.rb)中。
然后,当我运行Spec时,一个警告静默地显示在including Capybara::DSL in the global scope is not recommended!上。但在一些测试中,我得了Capybara::ElementNotFound: Unable to find xpath "/html"
我不得不包括在RSpec.configure区块中。

RSpec.configure do |config|
  config.include Capybara::DSL
end
cwxwcias

cwxwcias5#

在这里添加我的解决方案,因为我遇到了这个错误,而最初的问题可能对Capybara错误的实际原因含糊其辞。
在我的控制器中完成def create方法时,正在测试Submit按钮以重定向回(“上下文相关的”控制器)索引页,尽管在create方法中没有显式redirect_to索引。
添加了redirect_to "/<your_index_page_path_here>"并使测试通过/解决了有问题的测试失败。

相关问题