2012-04-26 8 views
8

जब मैं अपने आरएसपीईसी परीक्षणों में से एक को सेट करता हूं: js => true मुझे निम्न त्रुटि मिलती है। मैं निम्नलिखित संस्करणों का उपयोग कर रहा हूँ:कैपिबारा + सेलेनियम + आरएसपीसी - जेएस को सही पर सेट करते समय लोडरर

रेल - 3.2.2
Rspec - 2.9.0
Capybara - 1.1.2

डॉक्स के अनुसार, Capybara उपयोग कर किसी भी चश्मा चलाना चाहिए: js => सेलेनियम के माध्यम से सच है। कैपेबरा इसे खोजने में सक्षम नहीं था, लेकिन मैंने काम नहीं किया, तो मैंने अपने जेमफाइल में सेलेनियम जोड़ने की कोशिश की।

1) UserSignups GET /signup supports js 
Failure/Error: visit signup_path 
LoadError: 
    no such file to load -- { 
    "frozen": { 
     "app.update.auto": false, 
     "app.update.enabled": false, 
     "browser.download.manager.showWhenStarting": false, 
     "browser.EULA.override": true, 
     "browser.EULA.3.accepted": true, 
     "browser.link.open_external": 2, 
     "browser.link.open_newwindow": 2, 
     "browser.offline": false, 
     "browser.safebrowsing.enabled": false, 
     "browser.safebrowsing.malware.enabled": false, 
     "browser.search.update": false, 
     "browser.sessionstore.resume_from_crash": false, 
     "browser.shell.checkDefaultBrowser": false, 
     "browser.tabs.warnOnClose": false, 
     "browser.tabs.warnOnOpen": false, 
     "devtools.errorconsole.enabled": true, 
     "dom.disable_open_during_load": false, 
     "extensions.autoDisableScopes": 10, 
     "extensions.logging.enabled": true, 
     "extensions.update.enabled": false, 
     "extensions.update.notifyUser": false, 
     "network.manage-offline-status": false, 
     "network.http.phishy-userpass-length": 255, 
     "offline-apps.allow_by_default": true, 
     "prompts.tab_modal.enabled": false, 
     "security.fileuri.origin_policy": 3, 
     "security.fileuri.strict_origin_policy": false, 
     "security.warn_entering_secure": false, 
     "security.warn_entering_secure.show_once": false, 
     "security.warn_entering_weak": false, 
     "security.warn_entering_weak.show_once": false, 
     "security.warn_leaving_secure": false, 
     "security.warn_leaving_secure.show_once": false, 
     "security.warn_submit_insecure": false, 
     "security.warn_viewing_mixed": false, 
     "security.warn_viewing_mixed.show_once": false, 
     "signon.rememberSignons": false, 
     "toolkit.networkmanager.disable": true, 
     "toolkit.telemetry.prompted": 2, 
     "toolkit.telemetry.enabled": false, 
     "toolkit.telemetry.rejected": true 
    }, 
    "mutable": { 
     "browser.dom.window.dump.enabled": true, 
     "browser.startup.page": 0, 
     "browser.startup.homepage": "about:blank", 
     "dom.max_script_run_time": 30, 
     "dom.report_all_js_exceptions": true, 
     "javascript.options.showInConsole": true, 
     "network.http.max-connections-per-server": 10, 
     "webdriver_accept_untrusted_certs": true, 
     "webdriver_assume_untrusted_issuer": true 
    } 
    } 
+0

मेरे पास यह वही समस्या है। कोई भी जानकारी? – ubermensch

+1

स्टैक के माध्यम से इसे ट्रैक करना, ऐसा लगता है कि सेलेनियम-वेबड्राइवर-2.21.2/lib/सेलेनियम/webdriver.rb फ़ाइल में MultiJson.load (obj) कॉल लोडरर फेंक रहा है। सेलेनियम-वेबड्राइवर, कैपिबरा और मल्टी-जेसन रत्न के कौन से संस्करण आप उपयोग कर रहे हैं? – ubermensch

+0

मेरे पास सेलेनियम-वेबड्राइवर 2.21.2 और मल्टी_जेसन 1.1.0 है। –

उत्तर

7

यह मल्टी_जेसन को नवीनतम संस्करण में अपग्रेड करके भी काम किया जा सकता है।

+0

यह काम किया। (बंडल अद्यतन multi_json)। –

1

मुझे एक ही समस्या हो रही थी, मेरे लिए समाधान उस ड्राइव को बदल रहा था जिसका मैं उपयोग कर रहा था। उदाहरण के लिए तो:

scenario "answering the quiz for my recipient", :js => true, :driver => :rack_test do 
    click_button "Continue" 
end 

इस तरह से मैं rack_test बजाय सेलेनियम-WebDrive (Capybara के डिफ़ॉल्ट) का उपयोग कर रहा हूँ।

आशा है कि यह आपकी मदद करेगा!

+1

लेकिन फिर कल्पना जेएस नहीं चलाएगी। इसे अपने चश्मे में जेएस को संभालने के लिए एक ब्राउज़र की आवश्यकता है, इसलिए ड्राइवर को बदलना: rack_test इसे फ़ायरफ़ॉक्स लॉन्च करने से रोकता है। शायद मैं गलत हो सकता हूँ! –

9

मुझे अब 3 दिनों के लिए एक ही समस्या थी! यह मुझे पागल कर रहा था!

संक्षिप्त उत्तर: ढाल selenium-webdriver2.21.1

लंबे स्पष्टीकरण के लिए: कुछ स्रोत कोड मैं इस मुद्दे को सत्यापित कर सकते हैं की खुदाई के बाद एक रेल ऐप्लिकेशन के अंदर selenium-webdriver2.21.2 है (मैं रेल 3.0.x पर परीक्षण व्यक्तिगत रूप से)।

कोड का उल्लंघन करने वाली लाइन यहां पाया जा सकता http://code.google.com/p/selenium/source/browse/trunk/rb/lib/selenium/webdriver.rb?r=16651#78

में एक रेल इसकी गलत वर्ग ActiveSupport::Dependencies::Loadable एक वर्ग स्तर विधि loadObject पर बुलाया परिभाषित करता है अनुप्रयोग, इसलिए जांच MultiJson.respond_to?(:load) हमेशा true रिटर्न लेकिन मूल कारण है load विधि।