RemoteWebDriver的C#实现无法安装Chrome扩展

时间:2016-10-06 20:12:28

标签: c# selenium selenium-webdriver

此故障单与故障单1578 for Selenium有关,但问题出在Chrome上,而不是该故障单中的Firefox。

使用本地驱动程序时,安装和配置扩展程序。使用RemoteWebDriver的C#实现执行相同操作不会。使用Chrome进行了测试。

在我的测试用例中,远程执行是针对SauceLabs完成的。联系他们的支持,他们验证通过RemoteWebDriver安装扩展在JAVA实现中工作,但未能使用C#实现。

引用他们的支持票:

"我自己尝试了这个问题,而且我自己也遇到了问题,所以这可能是C#Selenium与RemoteWebDriver绑定的一个缺陷。"

我的代码:

(\s|$)

1 个答案:

答案 0 :(得分:1)

这是.NET绑定用户常犯的错误。您几乎不应该直接在代码中使用DesiredCapabilities类。相反,您应该在实例化驱动程序之前使用ChromeOptions类来设置所有选项,并使用.ToCapabilitied()方法将其转换为可以使用的ICapabilities对象使用RemoteWebDriver构造函数。在您的具体情况下,这将是这样的:

private IWebDriver GetSauceLabsDriver()
{
    var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    ChromeOptions options = new ChromeOptions();
    options.AddExtensions(outPutDirectory + @"\3.1.3_0.

    // Add capabilities that belong at the top
    // level of the capabilities object as opposed
    // to part of the chromeOptions capability. Note
    // that setting the browser name is entirely 
    // redundant and thus is not done. Likewise,
    // deviceName and deviceOrientation are 
    options.AddAdditionalCapability(CapabilityType.Version, "53.0", true);
    options.AddAdditionalCapability(CapabilityType.Platform, "Windows 10", true);
    options.AddAdditionalCapability("username", "kin", true);
    options.AddAdditionalCapability("accessKey", "9cd6-438e-a9635b70953d", true);
    options.AddAdditionalCapability("name", TestContext.CurrentContext.Test.Name, true);

    return new RemoteWebDriver(new Uri("http://ondemand.saucelabs.com:80/wd/hub"), options.ToCapabilities(),
        TimeSpan.FromSeconds(600));
}