Когда я запускаю селен с капибарой / рельсами, как мне настроить сервер? - PullRequest
14 голосов
/ 07 декабря 2011

Обычно я использую сервер rails dev на порту 3000.

Capybara / Cucumber использует Capybara.server_port = 31337.Если я переключаюсь с драйвера по умолчанию на селен, похоже, он пытается подключиться к порту 80.

Я пытаюсь понять:

  • При использовании селена мне нужноотдельно создать экземпляр тестового сервера в тестовой среде.
  • Если ответ на поставленный выше вопрос - да, как я могу сделать так, чтобы я мог беспрепятственно переключаться между веб-драйверами без необходимости что-либо менять?

Если у кого-нибудь есть пример конфигурации env.rb, который может помочь, пожалуйста, дайте мне знать!

Спасибо!

Крис.

Ответы [ 2 ]

14 голосов
/ 14 декабря 2011

Если вы используете селен, вам следует запустить веб-сервер в тестовой среде. Вы можете запустить его на другом порту из разработки. Затем вы должны настроить Capybara на использование этого порта:

  Capybara.run_server = true #Whether start server when testing
  Capybara.server_port = 8200
  Capybara.default_selector = :css #:xpath #default selector , you can change to :css
  Capybara.default_wait_time = 5 #When we testing AJAX, we can set a default wait time
  Capybara.ignore_hidden_elements = false #Ignore hidden elements when testing, make helpful when you hide or show elements using javascript
  Capybara.javascript_driver = :selenium #default driver when you using @javascript tag
  # Other option is:
  # Capybara.javascript_driver = :webkit

Если вы не хотите запускать сервер каждый раз перед запуском сценария с огурцом, я предлагаю вам использовать драйвер capybara webkit . Все сценарии JavaScript будут работать в фоновом режиме. Это также будет работать на сервере непрерывной интеграции.

Если вы работаете на платформе Linux, для работы capybara-webkit требуется X-сервер. Для его настройки вы можете использовать headless gem. Вот безголовая конфигурация для огурца:

# place code below in features/support/headless.rb
if Capybara.current_driver == :webkit
  require 'headless'

  headless = Headless.new
  headless.start

  at_exit do
    headless.destroy
  end
end
5 голосов
/ 14 декабря 2011

Это может или не может ответить на ваш вопрос, но вот мой файл env.rb (соответствующие биты).

Capybara.app_host = "http://0.0.0.0:3000"
Capybara.server_port = 3000

У меня тоже есть это:

Capybara.register_driver :iphone do |app|
  require 'selenium/webdriver'
  profile = Selenium::WebDriver::Firefox::Profile.new
  profile['general.useragent.override'] = "iPhone"

  Capybara::Selenium::Driver.new(app, :profile => profile)
end

Возможно, вы можете иметь строки Capybara.app_host и .server_port внутри бита register_driver и переключать драйвер в ваших скриптах Cucumber. : /

...