Как использовать Капибару в чистом Ruby (без Rails)? - PullRequest
31 голосов
/ 14 августа 2010

Я пытаюсь запустить 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 patchlevel 369) [universal-darwin9.0]
  • capybara (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

Мысли?

Спасибо!

Ответы [ 3 ]

29 голосов
/ 13 ноября 2010

Вот кое-что, что, кажется, работает для меня:

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
5 голосов
/ 15 августа 2010

Это говорит о том, что даже неправильная документация живет вечно. Capybara README обычно рекомендовал включать Capybara в глобальное пространство имен, это - действительно плохая идея, и она портит любое количество случайных вещей. Вы должны включить Capybara в свой собственный модуль или класс и использовать его вместо этого.

Проверьте README для текущих лучших практик.

2 голосов
/ 07 сентября 2016

Пожалуйста, проверьте этот пример CapybaraRspec101 и разветвите его.

Это небольшой пример для приемочных испытаний на http://www.hi5.com с нуля:

  • Капибара
  • Rspec
  • Селен WebDriver

Все инструкции находятся в репо

...