34

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

考え?

ありがとう!

4

3 に答える 3

30

ここに私のために働くと思われるものがあります:

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
于 2010-11-13T14:06:06.987 に答える
5

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

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

于 2010-08-15T10:51:06.470 に答える
4

このCapybaraRspec101の例を確認してフォークしてください。

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

  • カピバラ
  • Rspec
  • Selenium-webdriver

すべての手順はリポジトリにあります

于 2016-09-07T17:36:48.750 に答える