3

WatirでChrome拡張機能を読み込もうとしていますが、問題が発生しています。私はこの関連する質問を見つけました:watir-webdriverがロードされた拡張機能でchromeを起動する機能。しかし、その後も同じ問題が発生しています。

require 'rubygems'
require 'watir-webdriver'
require 'ruby-debug'
require 'nokogiri'

browser = Watir::Browser.new :chrome, :switches => %w[--load-extension=~/.config/google-chrome/Default/Extensions/anepbdekljkmmimmhbniglnnanmmkoja/0.1.12_0]

sleep(10)
browser.close

また、拡張機能を/Extensionsから/Desktopにコピーし、そこからロードしてみましたが、役に立ちませんでした。

私が得るエラーはCould not load extension from ... Manifest File Missing or Unreadable. 、マニフェストファイルが実際に存在し、JSON形式の正しいファイルのようです。

別の拡張機能を読み込もうとしても失敗します。

4

2 に答える 2

0

拡張機能をパックしてからbase64にすると、rubyコードから直接Chromeブラウザに読み込むことができます。

  1. 拡張機能を*.crxファイルにパックします。このガイドに従うか、Chrome拡張機能をパックする方法をグーグルで検索できます。

  2. Base64を使用して、目的の機能リストに追加します。これに似たコードを使用できます。

       chrome_extensions = []
       chrome_extension_path = '\home\user\packed_chrome_extension.crx'
    begin
      File.open(chrome_extension_path, "rb") do |file|
        chrome_extensions << Base64.encode64(file.read.chomp)
      end
    rescue Exception => e
      raise "ERROR: Couldn't File.read or Base64.encode64 a Chrome extension: #{e.message}"
    end
    
    # Append the extensions to your capabilities hash
    my_capabilities.merge!({'chrome.extensions' => chrome_extensions})
    
    desired_capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(my_capabilities)
    
    browser = Watir::Browser.new(:remote, :url => 'http://localhost:4444/wd/hub' :desired_capabilities => desired_capabilities)
    

そして、それも忘れないでくださいrequire 'base64'

この例はリモートのWebドライバーインスタンス用ですが、ローカルでWebドライバーを使用する場合にも機能するはずです。に渡される引数を調整するだけWatir::Browser.newです。

于 2013-01-03T09:33:30.687 に答える