2010-06-02 32 views
7

Thiết lập với dưa chuột, capybara và selen nhưng một số trường hợp chỉ hoạt động ngẫu nhiên.
Chạy
ruby ​​1.8.6 trên RVM
ray 2.3.8
selen bật mở firefox 3.6

Tôi đã cố gắng để thêm video này không có may mắn:dưa chuột, capybara & selen hoạt động ngẫu nhiên

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

Sản lượng lỗi là đôi khi:

> 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' 

Và 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' 

Và đôi khi nó chỉ hoạt động ....

Đây là cách env.rb của tôi trông giống như

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 

dưa chuột-bước sau:
Với tôi trên đăng ký trang
Và tôi điền vào "user_login" với "[email protected]" trong "body"
Và tôi điền vào "user_password" với "secret" trong "body"
Và Tôi điền vào "user_password_confirmation" với "bí mật" trong "cơ thể"
Và tôi kiểm tra "TERMS_OF_USE" trong "cơ thể"
Và tôi nhấn "create_user_button" trong "cơ thể"

Bất kỳ cái nhìn sâu sắc sẽ là :) lớn

+0

Did Tôi cũng thấy rằng trình điều khiển selen dường như không tìm thấy các yếu tố trên cơ sở không nhất quán.Đây là trên một trang rất đơn giản (tức là không có ajax), do đó thời gian không phải là một vấn đề. – AlistairH

Trả lời

3

Đó là chế nhạo HTTP, nếu bạn xóa web giả mạo hoặc webmock khỏi môi trường của mình (hoàn toàn), tất cả sẽ hoạt động trở lại.

Các bình luận cuối bởi Adam Greene làm việc liên quan đến thiết lập Curb với: Selenium :: WebDriver.for: firefox,: http_client => Selenium :: WebDriver :: xa :: Http :: Curb

Read the thread on the Capybara group.

Sự cố chúng tôi đang gặp đang phát lại lưu lượng truy cập http được ghi lại bằng cách sử dụng fakeweb hoặc webmock vì trình điều khiển web hiện là Curb. Vì vậy, nếu bạn là mục tiêu giả mạo lưu lượng truy cập trên Capybara, bạn sẽ nhận được thử nghiệm trình duyệt để hoạt động trở lại nhưng bạn sẽ không thể phát lại lưu lượng truy cập trên cùng một trình duyệt. (Chúng tôi đang sử dụng VCR để ghi lại.)

Thêm hỗ trợ lề đường được liệt kê dưới dạng "vé" trên trang web Vấn đề Github của Fakeweb.

0

tôi tình cờ gặp này trong Rails 2.3 ứng dụng với dưa chuột/Capybara/akephalos/fakeweb thời gian gần đây, nhưng cuối cùng đã giải quyết điều này bằng cách giết chết hoàn toàn tất cả các viên ngọc trong bó của tôi (họ nơi lưu giữ trong .bundle/ và cài đặt lại.

Các vấn đề liên quan