【发布时间】:2015-01-10 01:23:25
【问题描述】:
我正在使用 selenium webdriver.js 和 chromedriver 测试 chrome 扩展。我已经能够成功启动 chrome,安装了我的扩展,但是扩展 id 是随机生成的,而不是匹配我 manifest.json 的 key 属性。这使得无法测试选项页面等扩展页面。
manifest.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