8

rspecテストの1つを:js => trueに設定すると、次のエラーが発生します。私は次のバージョンを使用しています:

Rails — 3.2.2
Rspec — 2.9.0
Capybara — 1.1.2

ドキュメントによると、CapybaraはSeleniumを介して:js=>trueを使用してすべての仕様を実行する必要があります。CapybaraがSeleniumを見つけられなかった場合に備えて、GemfileにSeleniumを追加してみましたが、うまくいきませんでした。

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
     }
   }
4

3 に答える 3

10

私は今3日間同じ問題を抱えていました!それは私を狂わせていました!

簡単な答え:selenium-webdriverにダウングレード2.21.1

長い説明: ソースコードを掘り下げた後、問題がselenium-webdriver 2.21.2Railsアプリ内にあることを確認できます(私は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ます。

于 2012-04-27T15:08:13.967 に答える
7

これは、multi_jsonを最新バージョンにアップグレードすることでも回避できます。

于 2012-05-01T00:17:06.680 に答える
1

私は同じ問題を抱えていました、私にとっての解決策は私が使用していたドライブを変更することでした。したがって、たとえば:

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

このように、私はselenium-webdrive(デフォルトのCapybara)の代わりにrack_testを使用しています。

これがお役に立てば幸いです。

于 2012-04-26T21:50:56.107 に答える