黄瓜、水豚和硒随机工作黄瓜、工作

2023-09-08 00:30:57 作者:梦里有你再痛也不愿醒

使用黄瓜、水豚和硒进行设置,但某些场景只能随机运行.跑步rvm 上的 ruby​​ 1.8.6 导轨 2.3.8selenium pops open firefox 3.6我试图添加这个没有运气:

Setup with cucumber, capybara and selenium but some scenarios works only randomly. Running ruby 1.8.6 on rvm rails 2.3.8 selenium pops open firefox 3.6 I have tried to add this with no luck:

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'

有时它只是有效....

And sometimes it just works....

这就是我的 env.rb 的样子

This is how my env.rb looks like

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

黄瓜步骤:鉴于我在注册页面上我在body"中用jeppsipeppsi@arcticelvis.com"填写user_login"我在body"中用secret"填写user_password"我在body"中用secret"填写user_password_confirmation"我检查了body"中的terms_of_use"我在body"中按create_user_button"

Cucumber-steps: Given I am on the signup page And I fill in "user_login" with "jeppsipeppsi@arcticelvis.com" within "body" And I fill in "user_password" with "secret" within "body" And I fill in "user_password_confirmation" with "secret" within "body" And I check "terms_of_use" within "body" And I press "create_user_button" within "body"

任何见解都会很棒:)

推荐答案

这是 HTTP 模拟,如果您从环境中(完全)删除 fakeweb 或 webmock,它应该会再次工作.

It's HTTP mocking, if you remove fakeweb or webmock from your environment (entirely), it should all work again.

Adam Greene 关于设置 Curb 的最后一条评论确实有效:Selenium::WebDriver.for :firefox, :http_client => Selenium::WebDriver::Remote::Http::Curb

The last comment by Adam Greene DOES WORK regarding setting up Curb with: Selenium::WebDriver.for :firefox, :http_client => Selenium::WebDriver::Remote::Http::Curb

阅读 Capybara 组的主题.

我们遇到的问题是使用 fakeweb 或 webmock 回放记录的 http 流量,因为 web 驱动程序现在是 Curb.因此,如果您的目标是伪造 Capybara 上的流量,您将让浏览器测试再次工作,但您将无法在同一个浏览器上播放流量.(我们正在使用 VCR 进行录制.)

The problem we're having is playing back recorded http traffic using fakeweb or webmock since web driver is now Curb. So if you're goal was to fake out traffic over Capybara, you'll get browser testing to work again but you won't be able to play the traffic back over the same browser. (We're using VCR to record.)

添加遏制支持在 Fakeweb 的 Github 问题网站上列为票证".

Adding Curb support is listed as a "ticket" on the Fakeweb's Github Issues site.