【问题标题】:Capybara + Selenium + RSpec — LoadError when setting JS to trueCapybara + Selenium + RSpec - 将 JS 设置为 true 时的 LoadError
【发布时间】:2012-05-07 05:22:50
【问题描述】:

当我将我的 rspec 测试之一设置为 :js => true 时,我收到以下错误。我正在使用以下版本:

导轨 — 3.2.2
Rspec — 2.9.0
水豚——1.1.2

根据文档,Capybara 应该通过 Selenium 使用 :js => true 运行任何规范。我尝试将 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
     }
   }

【问题讨论】:

  • 我也有同样的问题。有什么信息吗?
  • 通过堆栈跟踪它,似乎 selenium-webdriver-2.21.2/lib/selenium/webdriver.rb 文件中的 MultiJson.load(obj) 调用抛出了 LoadError。您使用的是哪个版本的 selenium-webdriver、capybara 和 multi-json gem?
  • 我有 selenium-webdriver 2.21.2 和 multi_json 1.1.0。

标签: ruby-on-rails selenium rspec capybara


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我现在遇到同样的问题 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 类在Object 上定义了一个名为load 的类级别方法,因此检查MultiJson.respond_to?(:load) 总是返回true,但它是错误的load 方法。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我的解决方案是更换我正在使用的驱动器。 比如:

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

      这样我使用 rack_test 而不是 selenium-webdrive(Capybara 的默认值)。

      希望对您有所帮助!

      【讨论】:

      • 但是规范不会运行 JS。它需要一个浏览器来处理您规范中的 JS,因此将驱动程序更改为 :rack_test 会阻止它启动 Firefox。我可能错了!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 2014-02-22
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多