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



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

经过一番摆弄,我终于设法web-ext浏览器启动时打开一个带有moz-extension架构的页面。

使用扩展上下文(并正确测试页面)而不是作为普通file://打开此页面的唯一方法是使用moz-extension://<internal UUID>/path/to/extension/page/from/extension/root类型 URI 访问它。

问题是,作为临时扩展,它始终具有不同的UUID,该UUID在重新安装之间不会保留,因此在使用默认值时无法告诉web-ext通过-u打开扩展页面。

这就是这个有用的文档页面的用武之地。它提到了about:config中正是这样做的extensions.webextensions.keepUuidOnUninstall选项。因此,必须创建一个配置文件,将此选项设置为true,并与web-ext-p选项一起使用。

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

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

  1. 使用firefox --manageProfiles,创建一个单独的配置文件来测试我的扩展

  2. 继续设置并保存extensions.webextensions.keepUuidOnUninstallabout:config标志(无需web-ext--keep-profile-changes否则执行此操作)

  3. manifest.json中添加扩展的 id:

    "applications": {
    "gecko": {
    "id": "addon@example.com"
    }
    }
    
  4. web-ext run -p <testing profile name> --pre-install -u moz-extension://<extension UUID>/path/to/extension/page.html
    

这会从临时安装扩展程序开始 Firefox 并打开所需的页面。

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

相关内容

  • 没有找到相关文章

最新更新