2012-12-31 195 views
2

我試圖加載Watir的Chrome擴展程序,並遇到問題。 我發現這個相關的問題:Ability to launch chrome with extensions loaded with watir-webdriver。但是,我仍然在這之後遇到同樣的問題。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. Manifest文件確實存在,似乎是JSON格式的正確文件。

嘗試加載不同的擴展失敗。

回答

0

如果你打包擴展,然後base64它,你可以直接從你的ruby代碼加載到Chrome瀏覽器。

  1. 將您的擴展名打包到* .crx文件中。您可以按照this指南,或只是谷歌如何打包鉻擴展。

  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'了。

該示例適用於遠程網絡驅動程序實例,但我認爲它也適用於本地使用網絡驅動程序。只需調整傳遞給Watir::Browser.new的參數即可。

相關問題