Selenium::WebDriver::Error::JavascriptError: arguments[0] is undefined

Selenium::WebDriver::Error::JavascriptError: arguments[0] is undefined

在看到这是 Firefox 35 的问题后,我安装了 34 和 运行 bundle exec rspec 并且我的测试 运行 完美。但是当我再次尝试 运行 时,它以某种方式打开了较新版本的 Firefox,因为当我 运行 我的测试套件时再次出现以下错误:

 Selenium::WebDriver::Error::JavascriptError: arguments[0] is undefined

有没有办法确保我没有安装 Firefox 35 而 Selenium 正在以某种方式找到并打开它?我知道 Firefox 34 是我的 Applications 目录中的 Firefox 版本,但我不确定在使用 launchy 时是否没有 Selenium 抓取的较新 firefox 的副本。

所以,这是非常基本的,但我发现当我通过 dmg listed here 安装 Firefox 34 时,因为我天真地只是将 Firefox 图标拖放到应用程序文件夹中,单击 "Yes, I would like to overwrite the extant application" 我没有确保 Firefox 35 的所有较新文件都不能供 Selenium 使用,Selenium 在我不知道它选择哪个版本的情况下利用了它自己。

我只是将 mac 中的 Firefox 拖到废纸篓中,将其完全卸载,然后重新安装了 Firefox 34 dmg。

N.B。此外,如果您 运行 遇到此问题,当您下载 Firefox 34 时,您必须转到 Firefox >Preferences>Advanced ,单击更新选项卡,然后选择 "Check for updates, but let me choose whether to install them" 或 "Never check for updates" 以阻止 Firefox从自动更新到 Firefox 35 并因此在您下次再次 运行 它们时弄乱您的 Selenium 测试套件。

这是 known issue 当前版本的 selenium。

正如@janders223 在对 的评论中指出的那样,Ruby 项目的临时解决方法是使用 selenium-webdriver gem 的开发版本。

修改您的 Gemfile 以指定最新的开发版本(截至撰写本文时):

gem 'selenium-webdriver', '>=2.45.0.dev3'

然后 运行 bundle install.