огурец, капибара и селен работают случайным образом

Установка с огурцом, капибарой и селеном, но некоторыми сценариями работает только случайным образом.
Выполнение
рубиновые 1.8.6 на rvm
направляющие 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'

И othertimes:

> 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" в "теле"
И я заполняю "user_password" с "секретом" в "теле"
И я заполняю "user_password_confirmation" с "секретом" в "теле"
И я проверяю "terms_of_use" в "теле"
И я нажимаю "create_user_button" в "теле"

Любое понимание было бы большим :)

7
задан Nat Ritmeyer 12 August 2013 в 20:47
поделиться

1 ответ

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

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

Прочитайте тему в группе Capybara.

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

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

3
ответ дан 7 December 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: