2012-04-26 46 views
8

当我将其中一个rspec测试设置为:js => true时,出现以下错误。我使用以下版本:当将JS设置为true时,Capybara + Selenium + RSpec - LoadError

导轨 - 3.2.2
Rspec的 - 2.9.0
水豚 - 1.1.2

根据该文档,水豚应该运行使用任何规格:JS =>通过硒是真实的。我尝试将Selenium添加到我的Gemfile中,以防Capybara无法找到它,但那不起作用。

1) UserSignups GET /signup supports js 
Failure/Error: visit signup_path 
LoadError: 
    no such file to load -- { 
    "frozen": { 
     "app.update.auto": false, 
     "app.update.enabled": false, 
     "browser.download.manager.showWhenStarting": false, 
     "browser.EULA.override": true, 
     "browser.EULA.3.accepted": true, 
     "browser.link.open_external": 2, 
     "browser.link.open_newwindow": 2, 
     "browser.offline": false, 
     "browser.safebrowsing.enabled": false, 
     "browser.safebrowsing.malware.enabled": false, 
     "browser.search.update": false, 
     "browser.sessionstore.resume_from_crash": false, 
     "browser.shell.checkDefaultBrowser": false, 
     "browser.tabs.warnOnClose": false, 
     "browser.tabs.warnOnOpen": false, 
     "devtools.errorconsole.enabled": true, 
     "dom.disable_open_during_load": false, 
     "extensions.autoDisableScopes": 10, 
     "extensions.logging.enabled": true, 
     "extensions.update.enabled": false, 
     "extensions.update.notifyUser": false, 
     "network.manage-offline-status": false, 
     "network.http.phishy-userpass-length": 255, 
     "offline-apps.allow_by_default": true, 
     "prompts.tab_modal.enabled": false, 
     "security.fileuri.origin_policy": 3, 
     "security.fileuri.strict_origin_policy": false, 
     "security.warn_entering_secure": false, 
     "security.warn_entering_secure.show_once": false, 
     "security.warn_entering_weak": false, 
     "security.warn_entering_weak.show_once": false, 
     "security.warn_leaving_secure": false, 
     "security.warn_leaving_secure.show_once": false, 
     "security.warn_submit_insecure": false, 
     "security.warn_viewing_mixed": false, 
     "security.warn_viewing_mixed.show_once": false, 
     "signon.rememberSignons": false, 
     "toolkit.networkmanager.disable": true, 
     "toolkit.telemetry.prompted": 2, 
     "toolkit.telemetry.enabled": false, 
     "toolkit.telemetry.rejected": true 
    }, 
    "mutable": { 
     "browser.dom.window.dump.enabled": true, 
     "browser.startup.page": 0, 
     "browser.startup.homepage": "about:blank", 
     "dom.max_script_run_time": 30, 
     "dom.report_all_js_exceptions": true, 
     "javascript.options.showInConsole": true, 
     "network.http.max-connections-per-server": 10, 
     "webdriver_accept_untrusted_certs": true, 
     "webdriver_assume_untrusted_issuer": true 
    } 
    } 
+0

我有这个完全相同的问题。任何信息? – ubermensch 2012-04-26 14:22:01

+1

通过堆栈跟踪它,似乎Selenium-webdriver-2.21.2/lib/selenium/webdriver.rb文件中的MultiJson.load(obj)调用正在抛出LoadError。您使用的是哪种版本的selenium-webdriver,水豚和multi-json宝石? – ubermensch 2012-04-26 14:44:55

+0

我有selenium-webdriver 2.21.2和multi_json 1.1.0。 – 2012-04-26 15:46:37

回答

7

这也可以通过将multi_json升级到最新版本来解决。

+0

工作。 (捆绑更新multi_json)。 – 2012-05-01 12:37:58

1

我遇到了同样的问题,我的解决方案是改变我使用的驱动器。 因此,例如:

scenario "answering the quiz for my recipient", :js => true, :driver => :rack_test do 
    click_button "Continue" 
end 

这样,我使用的rack_test代替硒webdrive(水豚的默认设置)。

希望这对你有所帮助!

+1

但是,然后规范将不会运行JS。它需要一个浏览器来处理规范中的JS,所以将驱动程序更改为:rack_test将阻止它启动Firefox。我可能是错的! – 2012-04-27 12:33:29

9

我现在有同样的问题3天!它让我疯狂!

简短的回答:降级selenium-webdriver2.21.1

长解释: 经过一番挖掘到的源代码,我可以确认的问题是selenium-webdriver2.21.2一个Rails应用程序中(我测试在轨道上3.0.x的亲自)。

的代码有问题的行可以找到这里http://code.google.com/p/selenium/source/browse/trunk/rb/lib/selenium/webdriver.rb?r=16651#78

的根本原因是在一个Rails应用程序的类ActiveSupport::Dependencies::Loadable定义了一个名为loadObject类水平的方法,因此检查MultiJson.respond_to?(:load)总是返回true但其错load方法。

相关问题