2012-04-26 8 views
8

Cuando configuro una de mis pruebas de rspec para: js => true obtengo el siguiente error. Estoy usando las siguientes versiones:Capybara + Selenium + RSpec - LoadError al establecer JS en verdadero

carriles - 3.2.2
RSpec - 2.9.0
Carpincho - 1.1.2

De acuerdo con los documentos, capibara debe ejecutar ninguna especificaciones usando: js => cierto a través de Selenio. Intenté agregar Selenium a mi Gemfile, en caso de que Capybara no pudiera encontrarlo, pero eso no funcionó.

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

Tengo exactamente el mismo problema. ¿Cualquier información? – ubermensch

+1

Al rastrearlo a través de la pila, parece que la llamada MultiJson.load (obj) en el archivo selenium-webdriver-2.21.2/lib/selenium/webdriver.rb está arrojando LoadError. ¿Qué versiones de selenio-webdriver, capibara y gemas multi-json estás usando? – ubermensch

+0

Tengo selenium-webdriver 2.21.2 y multi_json 1.1.0. –

Respuesta

7

Esto también puede solucionarse actualizando multi_json a la última versión.

+0

Eso funcionó. (paquete de actualización multi_json). –

1

Estaba teniendo el mismo problema, la solución para mí fue cambiar el disco que estaba usando. Así, por ejemplo:

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

de esta manera Estoy utilizando el rack_test en lugar del selenio WebDrive (el valor por defecto de capibara).

Espero que esto te ayude!

+1

Pero entonces la especificación no ejecutará JS. Necesita un navegador para manejar JS en sus especificaciones, por lo que cambiar el controlador a: rack_test le impide iniciar Firefox. ¡Puedo estar equivocado! –

9

¡tuve el mismo problema ahora durante 3 días! me estaba volviendo loco!

respuesta corta: rebaja selenium-webdriver a 2.21.1

larga explicación: después de algo de investigación en el código fuente que puedo verificar el problema es selenium-webdriver2.21.2 dentro de una aplicación Rails (i prueba en los carriles 3.0.x personalmente).

la línea de código que se puede encontrar aquí http://code.google.com/p/selenium/source/browse/trunk/rb/lib/selenium/webdriver.rb?r=16651#78

la causa se encuentra en una aplicación Rails la clase ActiveSupport::Dependencies::Loadable define un método de nivel de clase llamada load en Object, por lo tanto, el cheque MultiJson.respond_to?(:load) siempre devuelve true pero es el mal load método.

Cuestiones relacionadas