我正在尝试让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
我做错了什么?
更多信息:
谢谢!
尼尔
注意:根据jnicklas的评论我试过这个,它更接近新的自述文件:
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
思想?
谢谢!
答案 0 :(得分:29)
这似乎对我有用:
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
答案 1 :(得分:5)
这表明即使是不正确的文档也会永远存在。 Capybara README曾经建议将Capybara包含在全局命名空间中,这是一个非常坏主意,并且会混淆任意数量的随机事物。你应该将Capybara包含在你自己的模块或类中,然后使用它。
查看README以了解当前的最佳实践。
答案 2 :(得分:2)
请查看此CapybaraRspec101示例并将其分叉。
这是从{0}开始使用http://www.hi5.com验收测试的一个小例子:
所有说明都在回购
中