如何在纯Ruby中使用Capybara(没有Rails)?
我正试图让Capybara在一个简单的Ruby脚本中运行——即不使用/不使用Rails。以下是脚本:如何在纯Ruby中使用Capybara(没有Rails)?,ruby,testing,tdd,capybara,Ruby,Testing,Tdd,Capybara,我正试图让Capybara在一个简单的Ruby脚本中运行——即不使用/不使用Rails。以下是脚本: require 'rubygems' require 'capybara' require 'capybara/dsl' include Capybara Capybara.current_driver = :selenium Capybara.app_host = 'http://www.google.com' visit('/') 问题是,当我运行此命令时,会出现以下错误: Name
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
我做错了什么
更多信息:
- MacOSX10.5
- ruby 1.8.6(2009-06-08 patchlevel 369)[universal-darwin9.0]
- 水豚(0.3.9)
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
想法
谢谢 这表明即使是不正确的文档也会永远存在。Capybara自述文件曾经建议将Capybara包含在全局名称空间中,这是一个非常糟糕的主意,并且会搞乱任意数量的随机事件。您应该在自己的模块或类中包含水豚,并使用它
查看自述文件以了解当前的最佳实践。这里有一些似乎对我有用的东西:
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
请检查此示例并将其分叉
这是关于从头开始使用的验收测试的一个小例子:
- 水豚
- Rspec
- Selenium Web驱动程序
所有说明都在回购协议中谢谢!不幸的是,当我将include放入模块中时,仍然看到相同的错误(NameError:uninitialized constant Capybara::Session)。我还做错了什么?最新的api要求包含Capybara::DSL看看这个github项目:从那里开始,设置一个独立的测试项目非常容易。这很酷,但是像“page.should have_content('My Account')”这样的代码似乎不起作用“应该”通常是在内核上定义的(我认为),在本例中似乎不是这样。我环顾四周,但无法立即找到解决方法。我们正在回复一条将近4年前的评论,但如果有任何谷歌用户也感到困惑,
should
(然后)和expect
(当前样式)由rspec expections
创业板提供。安装后,您将能够获得期望值,例如expect(第页)。要获得内容“foo”
在尝试此代码后,我发现无法连接到geckodriver 127.0.0.1:4444
是什么导致此错误?