3

我正在尝试使用 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 格式的正确文件。

尝试加载不同的扩展也会失败。

4

2 回答 2

2

下载 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 进行编码

于 2019-03-21T05:06:24.207 回答
0

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

  1. 将您的扩展打包到 *.crx 文件中。您可以按照指南进行操作,或者只是 google 如何打包 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 回答