【问题标题】:Chromedriver extension id does not match key in manifest.jsonChromedriver 扩展 ID 与 manifest.json 中的键不匹配
【发布时间】:2015-01-10 01:23:25
【问题描述】:

我正在使用 selenium webdriver.js 和 chromedriver 测试 chrome 扩展。我已经能够成功启动 chrome,安装了我的扩展,但是扩展 id 是随机生成的,而不是匹配我 manifest.json 的 key 属性。这使得无法测试选项页面等扩展页面。

ma​​nifest.json

// ...
"key": "pjnhffdkdckcagdmfmidafhppbomjdjg", // id from chrome web store
// ...

test.js

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

// load unpacked extension
var chromeOptions = new chrome.Options();
chromeOptions.addArguments('load-extension=/path/to/my/extension');

var service = new chrome.ServiceBuilder().build();
var driver = chrome.createDriver(chromeOptions, service)
// this page is not available T_T
driver.get('chrome-extension://pjnhffdkdckcagdmfmidafhppbomjdjg/html/options.html');

我的假设是扩展 id 将匹配密钥(从网上商店安装时它会匹配),但这似乎不适用于通过 chromedriver 加载扩展。有没有办法让加载的扩展具有一致的 ID?还是我应该采取其他方法?

【问题讨论】:

  • @RobW 感谢您的评论!如果我只使用通过 chrome 商店安装的扩展程序中的密钥,我认为我不需要完成生成 PEM 文件的过程。这个假设正确吗?
  • 好吧,如果您在解压后的扩展中使用来自 CWS 的任意扩展的密钥,那么您实际上是在模拟扩展。如果您不想使用我在该链接答案中提到的工具,那么您可以使用chrome://extensions 处的“Pack extension”按钮生成 crx 文件(和 PEM 文件)。创建 CRX 文件后,您可以使用我的 CRX 查看器查看扩展名的"key"(如stackoverflow.com/questions/21497781/… 中所述)。
  • @RobW 在这种情况下,扩展是我从 CWS 的扩展,所以我相信我应该很好(除非我误解了)。不过,对于那些没有从 CWS 开发的其他人来说,你提出了一个很好的观点。

标签: google-chrome-extension selenium-webdriver


【解决方案1】:

清单 key 值不是扩展 ID。您必须从网上商店安装扩展程序并查看您办公桌上的 manifest.json 文件。在该文件中使用key 值。 documentation 描述了如何找到安装目录。

【讨论】:

  • 就我而言,我根本不想使用网上商店。但我需要一个持续 ID 才能在我的机器和任何其他机器(帮助开发的伙伴)上运行我的测试。在这一点上,每个克隆我的项目的人都需要为这个扩展获取自己的 ID,这有点痛苦。检查我的问题:stackoverflow.com/questions/36641833/…
【解决方案2】:

我遇到了同样的问题。 只需从 crx 文件加载您的扩展,您将获得一致的 id。

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多