Watir Webdriver 加载 Chrome 扩展程序

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 并从那里加载,但没有成功。

我收到的错误信息是无法从...中加载扩展名。清单文件缺失或不可读 清单文件确实存在,并且似乎是正确的JSON格式文件。

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

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

最初的回答


0
如果你将扩展打包并进行base64编码,你可以直接从你的Ruby代码中加载它到Chrome浏览器中。
  1. 将您的扩展打包成一个*.crx文件。您可以按照this指南,或者只需搜索如何打包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: 无法读取文件或对Chrome扩展进行Base64编码:#{e.message}"
    end
    
    # 将扩展名附加到您的功能哈希表中
    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-Driver 实例的,但我认为在本地使用 Web-Driver 时也应该可以工作。只需调整传递给 Watir::Browser.new 的参数即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接