使用 addExtensions 选项时,Selenium 不会在 Firefox 中安装附加组件

Selenium does not install add-on in Firefox when using the addExtensions option

我想在 Firefox 中安装自定义 XPI 文件,当 运行 在 TypeScript 和 Jest 上下文中使用 seleniumgeckodriver 时。

测试脚本的重要部分is this:

let driver: webdriver.WebDriver;
const firefoxExt = path.resolve(__dirname, '..', '..', 'extension', 'firefox.xpi');
const firefoxOptions = new firefox.Options().addExtensions(firefoxExt);
driver = new webdriver.Builder().forBrowser('firefox').setFirefoxOptions(firefoxOptions).build();

我期待 Firefox 启动并安装 firefox.xpi 作为附加组件,但打开的 Firefox 实例中没有附加组件。 XPI 本身没有问题,因为 XPI 可以作为临时扩展手动安装,没有问题。此外,XPI 存在于路径中,否则它会在 path.resolve.

上出错

为了让其他人重现该问题,我创建了一个存储库,其中包含一个最小的、可重现的示例。请参阅此回购协议:https://github.com/slhck/web-extension-selenium-test

请注意,这不是以下内容的重复:

我已经在 Selenium 本身中创建了一个 bug report,但它还没有收到任何 activity。

有谁知道可能是什么问题以及如何解决?

您可以使用 installAddon。可能有更优雅的方法来做到这一点,但下面的代码有效:

beforeAll(async () => {
  const firefoxExt = path.resolve(__dirname, '..', '..', 'extension', 'firefox.xpi');
  driver = new webdriver.Builder().forBrowser('firefox').build();
  new firefox.Driver(driver.getSession(), driver.getExecutor()).installAddon(firefoxExt, true);
});