Je fais mes tests via le terminal depuis un moment maintenant sans aucun problème .:
concombre Create\New\Game.feature
Qui contient les éléments suivants:
Feature: Create New Game
Background:
Given I am logged in
Scenario: Cleanup & New Game 01
Then I Delete all test Games
Et le rubis:
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 défini comme:
# 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
Rien de ce qui précède n'a changé depuis le début des tests jusqu'à maintenant. Aujourd'hui, lorsque je commence les tests, dès que Firefox est ouvert, j'ai immédiatement:
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)
Comme vous pouvez le constater, cela échoue sur la première ligne. Je ne sais pas pourquoi.
J'ai mis à jour toutes mes perles pour m'assurer que tout était frais, mais cela n'a pas fonctionné. Je pensais que cela pouvait être un problème de navigateur, mon système étant automatiquement mis à jour vers Firefox 35.0 ce matin. J'ai désinstallé et essayé 34 mais c'est toujours le même problème. Aucun code n'a changé.
Je ne sais pas quelle autre mauvaise configuration aurait pu causer cela car je n’ai rien changé.
Quelqu'un peut-il aider davantage avec cette erreur?
Oui, le problème vient de Firefox 35. Passez à la version 34. C'est peut-être la façon dont vous avez procédé à la dégradation. J'ai simplement exécuté le nouveau programme d'installation de DMG et confirmé l'effacement de l'application existante.
Lien direct: https://download-installer.cdn.mozilla.net/pub/firefox/releases/34.0.5/mac/en-US/Firefox%2034.0.5.dmg (lien référencé depuis https://support.mozilla.org/en-US/kb/install-older-version-of-firefox )
Pour en savoir plus sur ce problème, rendez-vous ici: https://code.google.com/p/Selenium/issues/detail?id=8387
Comme Justin Ko a commenté, il s'agit d'un bogue avec Firefox 35 et Selenium-WebDriver 2.44.0. Le projet Selenium a un ticket de sortie pour celui-ci et, au moment de la rédaction de ce document, il existe une gem préliminaire (2.45.0.dev3) qui inclut le correctif.
Comme d'autres l'ont déjà dit, il existe un bogue dans Firefox 35. Pour éviter cela, j'ai trouvé qu'il était plus facile de configurer Capybara pour exécuter des tests Selenium dans Chrome. Donc, si vous n'avez pas besoin d'exécuter des tests, en particulier dans Firefox, vous pouvez utiliser chromedriver.
Il y a un bijou pour l'obtenir facilement.
Même problème avec le pilote firefox ici.
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 rétrogradé à 34.0.5 et le clic Javascript:
executeScript("arguments[0].click();", el);
Fonctionne à nouveau comme un charme.
Et il est très important d'avoir un clic javascript fonctionnel, car le clic natif est trop peu fiable.