【问题标题】:Selenium ChromeDriver, cannot start Google Chrome with Extension loadedSelenium ChromeDriver,无法在加载了扩展程序的情况下启动 Google Chrome
【发布时间】:2013-09-03 18:02:16
【问题描述】:

我正在使用 Selenium 2.0 为我的 Google Chrome 扩展程序创建自动化测试:

  1. WebdriverJS + NodeJS
  2. ChromeDriver
  3. MacOSX 10.8.4

首先,我也想测试安装过程,但是当使用 Selenium 弹出安装对话框时,似乎无法单击“添加”按钮。 (My other SO question about this)。

现在,我改变了我的计划。我不想将扩展程序安装为试驾的一部分,而是想在安装了我的扩展程序的情况下启动 Chrome。但我没有成功。

请看下面的代码:

var webdriver = require('selenium-webdriver'),
    chrome = require('selenium-webdriver/chrome');

var o = new chrome.Options();
o.addExtensions(['extensions/chrome/chrome_extension.zip']); // crx file is just a zip file
var s = new chrome.ServiceBuilder('bin/chromedriver').build();
var driver = chrome.createDriver(o, s)

当我运行上面的代码时,我收到以下错误:

我注意到 ChromeDriver 在打开 Chrome 时会加载一个名为“Chrome 自动化扩展程序 1”的 Chrome 扩展程序,因此必须有一种方法来加载另一个扩展程序,要么直接从带有应用 ID 的 Webstore 加载它,要么加载从本地机器 - 打包或解包。

任何帮助将不胜感激!

【问题讨论】:

  • 标题与问题有什么关系?这里没有关于“类”或“实例”的内容,更不用说标题中包含的内容了。但不是:一个类不是它自己的一个实例;虽然它是一个实例(即类也是对象)。
  • @user2246674 这绝对是一个不正确的标题。谢谢你抓住它!我会解决这个问题
  • manifest.json 是否在您的 zip 文件的根目录中? IE。你是不是在压缩之前不小心把你的扩展文件放在了一个子目录中?
  • @RobW 我在 zip 文件中的“extension”子目录下拥有所有文件,但这就是我将扩展上传到 Webstore 的方式。我将尝试使用没有子目录的新 zip 文件。感谢您的提示。
  • @RobW 非常感谢!有效! :) 请发布答案,以便我接受。

标签: selenium google-chrome-extension selenium-webdriver selenium-chromedriver


【解决方案1】:

确保“manifest.json”位于 zip 文件的根目录中。意外压缩扩展的目录而不是扩展文件是一个常见错误。

使用zip

cd path/to/extension
zip -ur ../chrome_extension.zip *

使用7-zip

cd path/to/extension
7z u -tzip ../chrome-extension.zip *

【讨论】:

    猜你喜欢
    • 2017-05-20
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    相关资源
    最近更新 更多