what tutorial rails docs ruby selenium cucumber capybara capybara-webkit

ruby - tutorial - Error de pepino/capibara: argumentos[0] no está definido(Selenium:: WebDriver:: Error:: JavascriptError)



selenium rails (4)

He estado ejecutando mis pruebas a través de la terminal desde hace un tiempo sin ningún problema .:

pepino Create / New / Game.feature

Que contiene lo siguiente:

Feature: Create New Game Background: Given I am logged in Scenario: Cleanup & New Game 01 Then I Delete all test Games

Y el rubí:

Given(/^I am logged in$/) do el = first("button[ttag=''account_dropdown_btn'']", :visible => true) if el.nil? logMeIn("[email protected]","pa55w0rd") end end

logMeIn definido como:

# Logs the user in with given credentials def logMeIn(username, password) page.driver.browser.manage.window.maximize visit ENV[''BASE_URL''] fill_in ''j_username'', :with => username fill_in ''j_password'', :with => password click_button ''Login'' end

Ninguno de los anteriores ha cambiado desde que las pruebas funcionaban hasta ahora. Hoy, cuando empiezo las pruebas, tan pronto como se abre Firefox, obtengo de inmediato:

Background: # features/Create New Game.feature:4 Given I am logged in # features/step_definitions/Generic Steps.rb:1 arguments[0] is undefined (Selenium::WebDriver::Error::JavascriptError)

Como puede ver, está fallando en la primera línea. No sé por qué.

Actualicé todas mis gemas para asegurarme de que todo estuviera fresco, pero esto no funcionó. Pensé que podría haber sido un problema del navegador ya que mi sistema se actualizó automáticamente a Firefox 35.0 esta mañana. Desinstalé e intenté 34, pero sigue siendo el mismo problema. Nada del código ha cambiado.

No sé qué otra mala configuración podría haber causado esto, ya que no he cambiado nada.

¿Alguien puede ayudarme con este error?


Como comentó Justin Ko , este es un error con Firefox 35 y Selenium-WebDriver 2.44.0. El proyecto Selenium tiene un ticket de problema, y ​​al momento de escribir, hay una gema de prelanzamiento (2.45.0.dev3) que incluye la corrección.

code.google.com/p/selenium/issues/detail?id=8390


Como han dicho otros, hay errores en Firefox 35. Para evitar eso, me pareció más fácil configurar Capybara para ejecutar las pruebas de Selenium en Chrome. Entonces, si no necesita ejecutar pruebas particularmente en Firefox, puede usar chromedriver.

Hay una gem para conseguirlo fácilmente.


El mismo problema con el controlador de Firefox aquí.

Caused by: org.openqa.selenium.WebDriverException: arguments[0] is undefined Command duration or timeout: 24 milliseconds Build info: version: ''2.44.0'', revision: ''76d78cf323ce037c5f92db6c1bba601c2ac43ad8'', time: ''2014-10-23 13:11:40'' System info: host: '''', ip: '''', os.name: ''Windows 7'', os.arch: ''amd64'', os.version: ''6.1'', java.version: ''1.7.0_71'' Session ID: 49a4f55c-33b7-4ab8-aea5-cb3bb98041e1 Driver info: org.openqa.selenium.firefox.FirefoxDriver Capabilities [{platform=WINDOWS, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=35.0.1}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599) at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:508)

Firefox degradado a 34.0.5 y el clic de Javascript:

executeScript("arguments[0].click();", el);

Funciona de nuevo como un encanto.

Y es muy importante tener un clic en javascript que funcione, ya que el clic nativo es demasiado poco fiable.


Sí, el problema es con Firefox 35. Degradación a la versión 34. Tal vez es la forma en que pasó la degradación. Simplemente ejecuté el nuevo instalador de DMG y confirmé la sobreescritura de la aplicación existente.

Enlace directo: https://download-installer.cdn.mozilla.net/pub/firefox/releases/34.0.5/mac/en-US/Firefox%2034.0.5.dmg (enlace al que se hace referencia desde https://support.mozilla.org/en-US/kb/install-older-version-of-firefox )

Puedes encontrar más sobre este tema aquí: https://code.google.com/p/selenium/issues/detail?id=8387