34

我试图让 Capybara 在一个简单的 Ruby 脚本中运行——即没有/在 Rails 之外。这是脚本:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'

include Capybara

Capybara.current_driver = :selenium
Capybara.app_host = 'http://www.google.com'

visit('/')

问题是,当我运行它时,我得到了这个错误:

NameError: uninitialized constant Capybara::Session

at top level    in dsl.rb at line 52
method gem_original_require in custom_require.rb at line 36
method require  in custom_require.rb at line 36
at top level    in capybara_test.rb at line 3
method gem_original_require in custom_require.rb at line 31
method require  in custom_require.rb at line 31
at top level    in capybara_test.rb at line 

我究竟做错了什么?

更多信息:

  • Mac OS X 10.5
  • ruby 1.8.6 (2009-06-08 patchlevel 369) [universal-darwin9.0]
  • 水豚 (0.3.9)

谢谢!

尼尔

注意:根据 jnicklas 的评论,我尝试了这个,它更接近于新的 README:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'

Capybara.default_driver = :selenium
Capybara.app_host = 'http://www.google.com'

module MyCapybaraTest
  include Capybara

  def test_google
    visit('/')
  end
end

不幸的是,我仍然看到同样的错误:

NameError: uninitialized constant Capybara::Session

想法?

谢谢!

4

3 回答 3

30

这似乎对我有用:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'

Capybara.run_server = false
Capybara.current_driver = :selenium
Capybara.app_host = 'http://www.google.com'

module MyCapybaraTest
  class Test
    include Capybara::DSL
    def test_google
      visit('/')
    end
  end
end

t = MyCapybaraTest::Test.new
t.test_google
于 2010-11-13T14:06:06.987 回答
5

它表明即使是不正确的文档也会永远存在。Capybara README 曾经建议将 Capybara 包含在全局命名空间中,这是一个非常糟糕的主意,并且会弄乱任意数量的随机事物。您应该在自己的模块或类中包含 Capybara 并使用它。

查看 README 以了解当前的最佳实践。

于 2010-08-15T10:51:06.470 回答
4

请检查这个CapybaraRspec101示例并将其分叉。

这是在http://www.hi5.com上使用从头开始的验收测试的一个小例子:

  • 水豚
  • 规格
  • Selenium-webdriver

所有说明都在 repo 中

于 2016-09-07T17:36:48.750 回答