Watir Webdriver加载Chrome扩展

时间:2012-12-31 22:43:14

标签: ruby google-chrome watir

我正在尝试使用Watir加载chrome扩展,我遇到了问题。 我发现了这个相关问题:Ability to launch chrome with extensions loaded with watir-webdriver。但是,在发布之后我仍然遇到同样的问题。

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格式的正确文件。

尝试加载不同的扩展程序也失败了。

2 个答案:

答案 0 :(得分:0)

如果您打包扩展程序然后打包它,则可以直接从ruby代码将其加载到Chrome浏览器中。

  1. 将您的扩展程序打包到* .crx文件中。您可以关注this指南,或只是谷歌如何打包镀铬扩展程序。

  2. 然后将它添加到您想要的功能列表中。您可以使用与此类似的代码:

       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)
    
  3. 并且不要忘记require 'base64'

    该示例适用于远程Web驱动程序实例,但我认为它也适用于本地使用Web驱动程序。只需调整传递给Watir::Browser.new的参数。

答案 1 :(得分:0)

下载chrome扩展程序crx文件

Store the args or any other option need to pass in the watir_opts hash 
 watir_opts[:extensions] = ['path of *.crx file']
 browser = Watir::Browser.new :chrome, options: watir_opts

这对我有用。 注意:我没有使用'base64'gem进行编码