【问题标题】:Selenium does not install add-on in Firefox when using the addExtensions option使用 addExtensions 选项时,Selenium 不会在 Firefox 中安装附加组件
【发布时间】:2020-05-17 12:34:44
【问题描述】:

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

测试脚本的重要部分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,但它还没有收到任何活动。

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

【问题讨论】:

    标签: selenium selenium-webdriver firefox geckodriver


    【解决方案1】:

    您可以使用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);
    });
    

    【讨论】:

    • C# API 中不存在 IWebDriver.InstallAddon - 有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多