可以使用Firefoxe的web-ext实用程序在开始时使用-u打开扩展页面吗?

问题描述 投票:1回答:1

据我所知,每次重新加载扩展时,它都会获得一个带有新UUID的新moz-extension:// URL。这使我无法预先知道我想与web-ext run -u一起使用的扩展页面URL。这使得web-ext几乎对我毫无价值,因为我必须(手动)打开我需要运行测试的页面。如果我事先知道了URL,我可以将它传递给web-ext并完全自动完成所有操作,并使用无头FF。有没有解决的办法?

url firefox uuid firefox-webextensions web-ext
1个回答
1
投票

经过一番摆弄后,我终于设法让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的用武之地。它提到了extensions.webextensions.keepUuidOnUninstall中的about:config选项。因此必须创建一个配置文件,将此选项设置为true,并与web-ext -p选项一起使用。

我遇到的下一个问题是页面无法打开。显然Firefox试图在安装扩展程序之前打开页面。但web-ext有一个--pre-install选项,使扩展(及其页面)在开始时可用,所以当它启用时,页面打开。警告1是使用--pre-install要求扩展具有必须在ID中设置的manifest.json(这不是由Firefox生成的提及的UUID)。警告2,--pre-install禁用文件更改时的扩展自动重新加载。

所以我的最终解决方案是:

  1. 使用firefox --manageProfiles,创建一个单独的配置文件来测试我的扩展
  2. 继续设置并保存extensions.webextensions.keepUuidOnUninstall about:config标志(不用web-ext--keep-profile-changes这样做)
  3. manifest.json中添加扩展名的ID: "applications": { "gecko": { "id": "[email protected]" } }
  4. web-ext run -p <testing profile name> --pre-install -u moz-extension://<extension UUID>/path/to/extension/page.html

这将启动Firefox并临时安装您的扩展程序并打开所需的页面。

如果您知道更好的解决方案(例如,不禁用自动重新加载的解决方案),那么您的答案非常受欢迎。

© www.soinside.com 2019 - 2024. All rights reserved.