当我将我的一个rspec测试设置为:js =>如果我收到以下错误。我使用以下版本:
Rails - 3.2.2
Rspec - 2.9.0
Capybara - 1.1.2
根据文档,Capybara应使用以下命令运行任何规范:js =>通过Selenium真实。我尝试将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 :(得分:9)
我现在有同样的问题,为期3天!它让我疯了!
简答:将selenium-webdriver
降级为2.21.1
长解释:
在深入研究源代码之后,我可以在Rails应用程序中验证问题是selenium-webdriver
2.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
在load
上定义了一个名为Object
的类级方法,因此检查MultiJson.respond_to?(:load)
始终返回true
但它是错误的load
方法。
答案 1 :(得分:7)
这也可以通过将multi_json升级到最新版本来解决。
答案 2 :(得分:1)
我遇到了同样的问题,我的解决方案是改变我正在使用的驱动器。 例如:
scenario "answering the quiz for my recipient", :js => true, :driver => :rack_test do
click_button "Continue"
end
这样我就使用了rack_test而不是selenium-webdrive(默认的Capybara)。
希望这对你有帮助!