Selenium ChromeDriver:添加 chrome 扩展在 Grid 上不起作用

Selenium ChromeDriver: Adding chrome extension does not work on Grid

我正在尝试 运行 使用 Chrome 和 ModHeader 扩展对 selenium 网格进行测试。

使用 Florent B 在 chrome modify headers in selenium java, i am able to add extension .crx through script

中提供的解决方案,扩展在本地加载良好

但我无法找出扩展未加载到网格节点的原因。事实上,当 运行 执行以下代码时,浏览器甚至不会打开。

你能帮忙吗?以下代码供您参考。

此致, 普拉蒂克

private static RemoteWebDriver UseSeleniumGrid()
{
    var path =
        Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName +
        "\Local\Google\Chrome\User Data\Default\Extensions\idgpnmonknjnojddfkpgkljpfnnfcklj\extension_2_1_1.crx";
    var options = new ChromeOptions();
    options.AddExtension(Path.GetFullPath(path));

    var capability = new DesiredCapabilities();
    capability.SetCapability(ChromeOptions.Capability, options);

    capability.SetCapability("browserName", "chrome");

    return new CorrelatedDriver(
        new Uri("http://localhost:4444/wd/hub"), capability, RemoteTimeout);
}

设法找到解决方案。

错误在行中:

var capability = new DesiredCapabilities();
capability.SetCapability(ChromeOptions.Capability, options);

根据 https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/7043 Chrome 选项无法在 SeleniumDriver 升级后以编程方式设置。解决方案是将选项转换为所需的功能。

下面的工作代码:

private static RemoteWebDriver UseSeleniumGrid()
{
    var path =
        Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName +
        "\Local\Google\Chrome\User Data\Default\Extensions\idgpnmonknjnojddfkpgkljpfnnfcklj\extension_2_1_1.crx";
    var options = new ChromeOptions();
    options.AddExtension(Path.GetFullPath(path));

    var capability = options.ToCapabilities() as DesiredCapabilities;

    capability.SetCapability("browserName", "chrome");

    return new CorrelatedDriver(
            new Uri("http://localhost:4444/wd/hub"), capability, RemoteTimeout);
}