我正在尝试在Firefox中运行一些依赖于加载扩展的javascript代码的功能测试。在Chrome中,我可以通过告诉浏览器启动器使用--load-extension=<path>启动Chrome来做到这一点。我没有在Firefox中找到与此类似的东西,也没有其他明确的方法来做到这一点。
我的第一个尝试是尝试使用-profile <path>命令行开关使用自定义配置文件启动火狐,但当尝试对火狐配置文件扩展元数据进行反向工程时,它看起来有一些绝对路径会使配置文件不可移植(即我无法将其签入git并让其他开发人员能够克隆和运行测试,因为它将查找我的机器的路径)。
有没有人知道解决这个问题的好方法?如果不是每次运行测试时都被迫生成extensions.json,我会很高兴的。
无论如何,我在node.js中使用karma & karma-firefox-launcher运行我的功能测试
发布于 2015-04-17 04:39:10
在做了一些more research之后,我找到了一个解决方案。您可以编写脚本创建一个空目录(比如'tempProfile'),并创建以下内容:
tempProfile/prefs.js
user_pref("extensions.autoDisableScopes", 0);
user_pref("extensions.enabledScopes", 15);tempProfile/extensions/
请在此处放置您的分机。扩展名的文件名必须与扩展名的'id‘完全匹配,文件扩展名为.xpi。您可以通过提取.xpi (即unzip XXX.xpi)并使用文本编辑器打开install.RDF文件来发现扩展的'id‘。在Description标记下查找em:id标记。
例如,如果您的install.RDF文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>myCustomExt@suchandsuch</em:id>
<em:version>1.0</em:version>
<em:type>2</em:type>
<em:bootstrap>true</em:bootstrap>
<em:unpack>false</em:unpack>
[...]
</Description>
</RDF>然后,您应该将扩展名的文件名设置为myCustomExt@suchandsuch.xpi。
一旦设置好配置文件,就可以在Firefox -profile /path/to/tempProfile上运行Firefox了
无论如何,karma和karma-firefox-launcher已经在每次运行浏览器时为你自动完成了很多工作,所以我只是修补了这个项目,添加了对将扩展放在正确位置和设置必要的首选项的支持。我提交了一个PR,它是here。
https://stackoverflow.com/questions/29661063
复制相似问题