如何在Linux中为headless Firefox安装自定义扩展?

如何在Linux中为headless Firefox安装自定义扩展?,firefox,selenium,codeception,headless,Firefox,Selenium,Codeception,Headless,Selenium的自动化测试非常棒,但是如何在预装扩展的无头Firefox上进行这些测试呢 我找到了Chrome,但没有找到Firefox 如何安装FF的扩展?您可以通过命令行全局安装附加组件(例如在我的Ubuntu上): 最好的办法是使用像Xvfb这样的东西。并在headless模式下运行firefox 现在您可以在Firefox上安装任何chrome扩展。这是解决办法。 我不知道您使用的语言,但是如果您手头有xpi文件,您可以安装(或者像这样启用它) 这是一种javascript方式,但所有

Selenium的自动化测试非常棒,但是如何在预装扩展的无头Firefox上进行这些测试呢

我找到了Chrome,但没有找到Firefox


如何安装FF的扩展?

您可以通过命令行全局安装附加组件(例如在我的Ubuntu上):


最好的办法是使用像Xvfb这样的东西。并在headless模式下运行firefox

现在您可以在Firefox上安装任何chrome扩展。这是解决办法。
我不知道您使用的语言,但是如果您手头有xpi文件,您可以安装(或者像这样启用它)

这是一种javascript方式,但所有selenium驱动程序的工作原理相同(请查看概要文件部分)


它已经没有头了。问题是如何安装扩展,而不是如何使其无头。这不是对这个问题的回答。从:“-安装全局扩展和-安装全局主题已从Gecko 1.9.2及以上版本中删除。”Gecko 1.9.2是Firefox 3.6。我们现在在Firefox45中。哦,谢谢。但我们已经迁移到了新的扩展类型(与chrome兼容),这是新FF版本所需要的。我现在会检查测试结果。无论如何,感谢链接到有关此API的更多详细信息。Chrome headless不支持扩展,请参阅
gksudo firefox -install-global-extension "path_to_your.xpi"
let binary;
    switch (channel) {
      case 'nightly':
        binary = new firefox.Binary(firefox.Channel.NIGHTLY);
        break;
      case 'beta':
        binary = new firefox.Binary(firefox.Channel.BETA);
        break;
      default:
        binary = new firefox.Binary(firefox.Channel.RELEASE);
    }

    binary.addArguments('-headless');

    let options = new firefox.Options();
    options.setBinary(binary);

    let profile = new firefox.Profile();
    profile.addExtension(path.join(__dirname, 'uBlock0@raymondhill.net.xpi'));
    options.setProfile(profile);

    driver = new webdriver.Builder()
      .forBrowser('firefox')
      .setFirefoxOptions(options)
      .build();