2015-01-15 5 views
28

Ich habe meine Tests über das Terminal für eine Weile jetzt ohne Probleme läuft .:Gurke/Capybara Fehler: Argumente [0] nicht definiert ist (Selenium :: WebDriver :: Fehler :: JavascriptError)

Gurke erstellen \ New \ Game.feature

Welche der folgenden enthält:

Feature: Create New Game 

    Background: 
    Given I am logged in 

    Scenario: Cleanup & New Game 01 
    Then I Delete all test Games 

Und Rubin:

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 wie folgt definiert:

# 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 

Keine der oben aus, wenn die Tests arbeiten bis jetzt verändert hat. Wenn ich heute die Tests beginnen, sobald Firefox öffnet, erhalte ich sofort:

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) 

Wie Sie sehen können, ist es in der ersten Zeile hat versagt. Ich weiß nicht warum.

Ich aktualisierte alle meine Edelsteine, um sicherzustellen, dass alles frisch war, aber das hat nicht funktioniert. Ich dachte, es könnte ein Browser-Problem gewesen sein, da mein System heute Morgen automatisch auf Firefox 35.0 aktualisiert wurde. Ich habe deinstalliert und versucht 34, aber es ist immer noch das gleiche Problem. Keiner der Code hat sich geändert.

Ich weiß nicht, welche andere Fehlkonfiguration dies verursacht haben könnte, da ich nichts geändert habe.

Kann jemand weiter mit diesem Fehler helfen?

+4

Es scheint das Update auf Firefox 35 zu sein. Ich habe gerade den ChromeDriver ausprobiert und es funktioniert. Ich glaube nicht, dass es alle verbleibenden Verbindungen zu Firefox vollständig entfernt hat, als ich es deinstallierte und auf 34 herunterstufte. – James

+10

Dies ist ein Fehler mit Firefox 35 und Selenium-WebDriver. Es ist ein Problem dafür offen - https://code.google.com/p/selenium/issues/detail?id=8390. –

Antwort

17

Ja, das Problem ist mit Firefox 35. Downgrade auf Version 34. Vielleicht ist es die Art und Weise, wie Sie das Downgrade durchgeführt haben. Ich habe einfach das neue DMG-Installationsprogramm ausgeführt und bestätigt, dass die vorhandene App überschrieben wurde.

Direktlink: https://download-installer.cdn.mozilla.net/pub/firefox/releases/34.0.5/mac/en-US/Firefox%2034.0.5.dmg (Link von https://support.mozilla.org/en-US/kb/install-older-version-of-firefox verwiesen)

Mehr zu diesem Thema finden Sie hier: https://code.google.com/p/selenium/issues/detail?id=8387

+2

Ich legte Firefox 34 in ein separates Verzeichnis und machte meine Capybara verwenden sie von Selenium :: WebDriver :: Firefox :: Binary.path = ENV ['firefox_path'] wenn ENV ['firefox_path'] 'und dann diese env-Variable wenn Gurke läuft. – nroose

3

Wie schon andere gesagt haben, gibt Fehler in Firefox ist 35. Um das zu vermeiden, fand ich es am einfachsten, Capybara config Selenium-Tests in Chrome laufen. Wenn Sie also keine Tests speziell in Firefox ausführen müssen, können Sie den Chromedriver verwenden.

Es gibt eine gem für einfach zu bekommen.

0

Gleiches Problem mit dem Firefox-Treiber hier.

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) 

Downgraded Firefox 34.0.5 und Javascript klicken:

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

Arbeiten wieder wie ein Zauber.

Und es ist ziemlich wichtig, einen funktionierenden Javascript-Klick zu haben, da der native Klick einfach viel zu unzuverlässig ist.