質問

シンプルなRubyスクリプトでCapybaraを実行しようとしています。つまり、レールのない/外側の外側です。これがスクリプトです:

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

考え?

ありがとう!

役に立ちましたか?

解決

これが私のために働いているように見えるものです:

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

他のヒント

誤ったドキュメントでさえ永遠に生きていることを示します。 Capybara Readmeは、グローバルネームスペースにCapybaraを含めることをお勧めしていましたが、これは 本当 悪い考え、そして何度もランダムなものを台無しにします。独自のモジュールまたはクラスにカピバラを含めて、代わりにそれを使用する必要があります。

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

これを確認してください capybararspec101 例とフォーク。

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

  • カピバラ
  • rspec
  • セレンウェブドイバー

すべての指示はレポにあります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top