2012-04-21 22 views
3

我需要從動態構建的頁面獲取數據,我發現的一個解決方案是Watir。在rails動作中啓動Watir-Webdriver

下一頁代碼工作正常,從IRB:

萬一
require 'rubygems' 
require 'watir-webdriver' 
require 'headless' 

Headless.ly do 
    browser = Watir::Browser.new :firefox 
    browser.goto "google.com" 
    browser.close 
end 

我嘗試從Rails應用程序運行它有下一個問題:

的Gemfile:

gem 'headless' 
gem 'watir-webdriver' 

行動:

def test_action 
    Headless.ly do 
      browser = Watir::Browser.new(:firefox) 
      browser.goto "google.com" 
      browser.close 
    end 
end 

有下一個輸出:

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

哪裏有問題?

回答

2

我的項目有一個與你

我發現這個問題由寶石「硒的webdriver」

和優化版本cauesed應該是「2.20.0」

同樣的錯誤如果寶石的版本高於此,這個錯誤會發生

+0

感謝您的回覆,我發現這個:) – 2012-04-25 12:58:05

1

只是把這個代碼在您的初始化目錄,用「的Watir-webdriver的」作品「0.5.5」

require 'childprocess' 
require 'tmpdir' 
require 'fileutils' 
require 'date' 

require 'multi_json' 
require 'selenium/webdriver/common' 

module Selenium 
    module WebDriver 

    if MultiJson.respond_to?(:load) 
     # @api private 
     def self.json_load(obj) 
     MultiJson.decode(obj) 
     #MultiJson.load(obj) here was mistake 
     end 
    else 
     # @api private 
     def self.json_load(obj) 
     MultiJson.decode(obj) 
     end 
    end 

    end 
end 
0

問題討論here

爲了解決它,你也可以嘗試更新multi_json寶石,如:

bundle update multi_json 

對我來說,從版本1.0.3升級到1.3.5解決了這個問題。