2010-08-14 14 views
31

我試圖讓Capybara運行在一個簡單的Ruby腳本中 - 即沒有/在Rails之外。這裏的腳本:如何在純Ruby中使用Capybara(不含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
  • 紅寶石1.8.6(2009-06-08 PATCHLEVEL 369)[萬向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 

想法?

謝謝!

+1

的最新的API要求包括水豚:: DSL – bparanj 2011-07-22 00:27:59

+0

看看這個混帳hub項目:https://github.com/searls/remote-capybara-cucumber-example從那裏開始,設置一個獨立的測試項目非常簡單。 – leifg 2012-01-03 10:05:57

回答

28

這裏的東西,似乎爲我工作:

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

這很酷,但代碼像「頁面。應該has_content('我的帳戶')「似乎不工作'應該'通常在內核上定義(我認爲),似乎並沒有在這種情況下,我環顧四周,但不能立即找出如何解決這個問題 – 2014-01-11 20:13:09

+2

它回覆了近4年前的評論,但如果有任何谷歌的人也被搞糊塗了,那麼應該(當然)和期望(當前風格)由'rspec-expectations' gem。通過安裝,你將能夠期待諸如expect(page).to have_content「foo」' – DVG 2014-11-26 14:54:08

5

這表明即使不正確的文檔永遠存在。水豚自述文件用於推薦在全球命名空間中包含水豚,這是一個壞主意,並且會混淆任何數量的隨機事物。你應該在你自己的模塊或課堂中包括水豚,並使用它。

查看當前最佳做法的README。

+0

謝謝!不幸的是,當我將include包含在模塊中時,我仍然看到相同的錯誤(NameError:未初始化的常量Capybara :: Session)。我還有什麼做錯了? – 2010-08-15 13:19:18

1

請檢查該CapybaraRspec101例子和叉它。

這是從頭開始使用驗收測試的一個小例子上http://www.hi5.com

  • 水豚
  • Rspec的
  • 硒的webdriver

所有的指令都是在回購

相關問題