огурец, капибара и селен работают случайным образом - PullRequest
7 голосов
/ 02 июня 2010

Настройка с огурцом, капибарой и селеном, но некоторые сценарии работают только случайным образом.
Бег
ruby 1.8.6 на рвм
Рельсы 2.3.8
Селен всплывает открытый Firefox 3,6

Я попытался добавить это без удачи:

with_scope(selector) do
  click_button(button)
  selenium.wait_for_page_to_load
end

Иногда вывод ошибки:

>  Given I am logged in and have created newsletter and subscribers                           # features/step_definitions/newsletter_send_steps.rb:108
      end of file reached (EOFError)
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/protocol.rb:133:in `sysread'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/protocol.rb:133:in `rbuf_fill'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/timeout.rb:62:in `timeout'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/timeout.rb:93:in `timeout'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/protocol.rb:126:in `readline'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/http.rb:2020:in `read_status_line'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/http.rb:2009:in `read_new'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/http.rb:1050:in `request_without_fakeweb'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/http.rb:1037:in `request_without_fakeweb'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/http.rb:543:in `start'
      /Users/christianhager/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/1.8/net/http.rb:1035:in `request_without_fakeweb'
      ./features/step_definitions/web_steps.rb:24:in `__instance_exec2'
      ./features/step_definitions/web_steps.rb:9:in `with_scope'
      ./features/step_definitions/web_steps.rb:9:in `with_scope'
      ./features/step_definitions/web_steps.rb:23:in `/^(?:|I )press "([^\"]*)"(?: within "([^\"]*)")?$/'
      features/enhanced/newsletter_send1.feature:7:in `Given I am logged in and have created newsletter and subscribers'

И в других случаях:

> no button with value or id or text 'create_user_button' found (Capybara::ElementNotFound)
      ./features/step_definitions/web_steps.rb:24:in `__instance_exec2'
      ./features/step_definitions/web_steps.rb:9:in `with_scope'
      ./features/step_definitions/web_steps.rb:9:in `with_scope'
      ./features/step_definitions/web_steps.rb:23:in `/^(?:|I )press "([^\"]*)"(?: within "([^\"]*)")?$/'
      features/enhanced/newsletter_send1.feature:7:in `Given I am logged in and have created newsletter and subscribers'

А иногда это просто работает ....

Вот так выглядит мой env.rb

ENV["RAILS_ENV"] ||= "cucumber"
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')

require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
require 'cucumber/rails/world'
require 'cucumber/rails/active_record'
require 'cucumber/web/tableish'
require 'capybara/rails'
require 'capybara/cucumber'
require 'capybara/session'
require 'cucumber/rails/capybara_javascript_emulation' 
require "selenium-webdriver"

Capybara.default_driver = :selenium
Capybara.default_wait_time = 5 
Capybara.ignore_hidden_elements = false
Capybara.default_selector = :css

ActionController::Base.allow_rescue = false

require 'database_cleaner'
DatabaseCleaner.strategy = :truncation

Before do
 Capybara.reset_sessions!
 DatabaseCleaner.clean
end

Cucumber::Rails::World.use_transactional_fixtures = false

Огурцы-шаги:
Учитывая, что я на странице регистрации
И я заполняю "user_login" с помощью "jeppsipeppsi@arcticelvis.com" внутри "body"
И я заполняю "user_password" словом "secret" внутри "body"
И я заполняю "user_password_confirmation" с "секретом" внутри "тела"
И я проверяю "rules_of_use" внутри "body"
И я нажимаю «create_user_button» внутри «body»

Любое понимание было бы здорово:)

Ответы [ 2 ]

3 голосов
/ 07 июля 2010

Это HTTP-макет, если вы удалите fakeweb или webmock из вашей среды (полностью), все должно работать снова.

Последний комментарий Адама Грина РАБОТАЕТ в отношении настройки Curb с: Selenium :: WebDriver.for: firefox,: http_client => Selenium :: WebDriver :: Remote :: Http :: Curb

Прочтите ветку о группе Капибара.

Проблема, с которой мы сталкиваемся, заключается в воспроизведении записанного http-трафика с использованием fakeweb или webmock, поскольку веб-драйвер теперь ограничен. Таким образом, если ваша цель состояла в том, чтобы фальсифицировать трафик через Capybara, тестирование браузера снова заработает, но вы не сможете воспроизвести трафик через тот же браузер. (Мы используем видеомагнитофон для записи.)

Добавление поддержки Curb указано как «тикет» на сайте Fakeweb's Github Issues.

0 голосов
/ 09 февраля 2012

Я столкнулся с этим в приложении Rails 2.3 с cucumber / capybara / akephalos / fakeweb недавно, но в конечном итоге решил эту проблему, полностью убив все драгоценные камни в моем комплекте (они были в .bundle/ и переустановив.

...