据我所知,每次重新加载一个扩展时,它都会获得一个新的UUID和一个新的moz-extension://。这使得我不可能提前知道我想要与web-ext run -u一起使用的扩展页面URL。这使得web-ext对我来说几乎毫无价值,因为我必须(手动)打开我需要在其上运行测试的页面。如果我事先知道网址,我就可以把它传递给web-ext,然后用一个无头FF完全自动地做所有的事情。有什么办法可以解决这个问题吗?
发布于 2019-04-28 04:41:43
经过一番折腾之后,我终于设法让web-ext在浏览器启动时打开了一个带有moz-extension模式的页面。
(我发现)使用扩展上下文打开此页面(并正确测试此页面)而不是将其作为普通file://打开的唯一方法是使用moz-extension://<internal UUID>/path/to/extension/page/from/extension/root类型URI来访问它。
问题是,作为一个临时扩展,它总是有一个不同的UUID,在重新安装之间不会保留,所以没有办法告诉web-ext在使用默认设置的同时通过-u打开扩展页面。
这就是this helpful documentation page的用武之地。它提到了about:config中的extensions.webextensions.keepUuidOnUninstall选项,它就是这样做的。因此,必须创建一个将此选项设置为true的配置文件,并将其与web-ext -p选项一起使用。
我遇到的下一个问题是,页面将静默无法打开。显然,Firefox试图在安装扩展之前打开该页面。但是web-ext有一个--pre-install选项,可以让扩展(和它的页面)在启动时可用,所以当它被启用时,页面就会打开。注意1:使用--pre-install需要扩展有一个必须在manifest.json中设置的ID (这个不是前面提到的由火狐生成的UUID )。警告2,--pre-install在文件更改时禁用扩展名自动重新加载。
所以我的最终解决方案是:
对于带有firefox --manageProfiles的
extensions.webextensions.keepUuidOnUninstall about:config标志(在不使用web-ext或使用--keep-profile-changes code manifest.json的情况下执行此操作manifest.json为扩展添加id:"applications":{ "gecko":{ "id":"addon@example.com“}}
moz-extension:///path/to/extension/page.html -ext运行-p --预安装-u web
这将启动Firefox,临时安装您的扩展并打开所需的页面。
如果您知道更好的解决方案(例如,不禁用自动重新加载的解决方案),欢迎您的回答。
https://stackoverflow.com/questions/55874988
复制相似问题