我已经通过终端运行我的测试一段时间了,没有任何问题。
黄瓜 创建\ 新\游戏.功能
其中包含以下内容:
Feature: Create New Game
Background:
Given I am logged in
Scenario: Cleanup & New Game 01
Then I Delete all test Games
还有红宝石:
Given(/^I am logged in$/) do
el = first("button[ttag='account_dropdown_btn']", :visible => true)
if el.nil?
logMeIn("user@user1.com","pa55w0rd")
end
end
logMeIn 定义为:
# 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
从测试工作到现在,上述内容都没有改变。今天,当我开始测试时,Firefox 一打开,我就会立即得到:
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)
如您所见,它在第一行失败。 我不知道为什么。
我更新了我所有的宝石,以确保一切都是新鲜的,但这不起作用。 我认为这可能是浏览器问题,因为我的系统今天早上自动更新到 Firefox 35.0。 我卸载并尝试了 34,但它仍然是同样的问题。 所有代码均未更改。
我不知道还有什么其他配置错误会导致这种情况,因为我没有改变任何东西。
任何人都可以进一步帮助解决此错误吗?
是的,问题出在Firefox 35上。降级到版本 34。也许这就是你降级的方式。我只是运行了新的DMG安装程序并确认覆盖了现有应用程序。
直接链接:https://download-installer.cdn.mozilla.net/pub/firefox/releases/34.0.5/mac/en-US/Firefox%2034.0.5.dmg(链接引用自 https://support.mozilla.org/en-US/kb/install-older-version-of-firefox)
有关此问题的更多信息,请参阅此处:https://code.google.com/p/selenium/issues/detail?id=8387
正如 Justin Ko 评论的那样,这是 Firefox 35 和 Selenium-WebDriver 2.44.0 的一个错误。Selenium 项目有一个问题票证,在撰写本文时,有一个包含该修复程序的预发布 gem (2.45.0.dev3)。
https://code.google.com/p/selenium/issues/detail?id=8390
正如其他人所说,Firefox 35 中存在错误。为了避免这种情况,我发现配置Capybara以在Chrome中运行Selenium测试是最容易的。因此,如果您不需要在Firefox中运行测试,则可以使用chromedriver。
有一个宝石可以轻松获得它。
这里的火狐驱动程序也有同样的问题。
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 降级到 34.0.5 和 Javascript 点击:
executeScript("arguments[0].click();", el);
再次像魅力一样工作。
有一个有效的javascript点击是非常重要的,因为原生点击太不可靠了。