web-dev-qa-db-ja.com

純粋なRuby(Railsなし)で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('/')

問題は、これを実行すると次のエラーが発生することです。

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パッチレベル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

考え?

ありがとう!

33
Neal Enssle

これが私にとってうまくいくように見えるものです:

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
29
Pål Brattberg

それは、間違ったドキュメントでさえ永遠に生きていることを示しています。 Capybara READMEグローバル名前空間にCapybaraを含めることを推奨するために使用されます。これは本当に悪い考えであり、ランダムなものをいくつでも台無しにします。Capybaraを含める必要があります。独自のモジュールまたはクラスで、代わりにそれを使用してください。

現在のベストプラクティスについては、READMEを確認してください。

5
jnicklas

これをチェックしてください CapybaraRspec101 例とフォークしてください。

これは、 http://www.hi5.com ゼロから使用する受け入れテストの小さな例です。

  • カピバラ
  • Rspec
  • Selenium-webdriver

すべての指示はリポジトリにあります

3
G. I. Joe