我正在尝试使用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格式的正确文件。
尝试加载不同的扩展程序也失败了。
答案 0 :(得分:0)
如果您打包扩展程序然后打包它,则可以直接从ruby代码将其加载到Chrome浏览器中。
将您的扩展程序打包到* .crx文件中。您可以关注this指南,或只是谷歌如何打包镀铬扩展程序。
然后将它添加到您想要的功能列表中。您可以使用与此类似的代码:
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
的参数。
答案 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进行编码