2010-06-02 18 views
7

ककड़ी, कैपिबरा और सेलेनियम के साथ सेटअप लेकिन कुछ परिदृश्य केवल यादृच्छिक रूप से काम करता है।
rvm पर चल रहा है
रूबी 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' 

और 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" को "body"
के भीतर "[email protected]" के साथ भरता हूं और मैं "user_password" को "body"
के भीतर "गुप्त" के साथ भरता हूं और मैं "गुप्त" के साथ "user_password_confirmation" "शरीर" के भीतर
में भरने और मैं "TERMS_OF_USE" जाँच "शरीर"
भीतर और मैं "create_user_button" प्रेस "शरीर" के भीतर

किसी भी अंतर्दृष्टि होगा महान :)

+0

क्या पूरी तरह से मेरी बंडल में सभी जवाहरात की हत्या करके इसका समाधान करने के मिला आप इसे हल करने के लिए प्रबंधन करते हैं? मुझे यह भी पता चल रहा है कि सेलेनियम ड्राइवर को असंगत आधार पर तत्व नहीं मिलते हैं। यह एक बहुत ही सरल पृष्ठ (यानी कोई AJAX) पर नहीं है, इसलिए समय एक मुद्दा नहीं होना चाहिए। – AlistairH

उत्तर

3

यह HTTP मॉकिंग है, अगर आप अपने पर्यावरण (पूरी तरह से) से फ़ेकवेब या वेबमैक हटाते हैं, तो यह सब फिर से काम करना चाहिए। सेलेनियम :: WebDriver.for: फ़ायरफ़ॉक्स,:

एडम ग्रीन द्वारा पिछले टिप्पणी के साथ अंकुश लगाने की स्थापना के बारे में काम करता है http_client => सेलेनियम :: WebDriver :: रिमोट :: Http :: कर्ब

Read the thread on the Capybara group.

हम जो समस्या कर रहे हैं वह फ़ैकवेब या वेबमैक का उपयोग करके रिकॉर्ड किया गया http यातायात वापस चला रहा है क्योंकि वेब ड्राइवर अब कर्ब है। तो यदि आप लक्ष्य हैं Capybara पर यातायात बाहर नकली करना था, तो आप फिर से काम करने के लिए ब्राउज़र परीक्षण प्राप्त करेंगे, लेकिन आप एक ही ब्राउज़र पर यातायात को वापस चलाने में सक्षम नहीं होंगे। (हम रिकॉर्ड करने के लिए वीसीआर का उपयोग कर रहे हैं।)

कर्क समर्थन जोड़ना फ़ैकेवेब के गिथब मुद्दे साइट पर "टिकट" के रूप में सूचीबद्ध है।

0

मैं हाल ही में ककड़ी/capybara/akephalos/fakeweb के साथ एक रेल 2.3 अनुप्रयोग में इस टकरा, लेकिन अंत में (वे .bundle/ में रखा और फिर से स्थापित करने कहाँ।

संबंधित मुद्दे