c#实现RemoteWebDriver安装Chrome扩展失败
本文关键字:扩展 失败 Chrome 安装 实现 RemoteWebDriver | 更新日期: 2023-09-27 18:11:49
这张票与Selenium的票证1578有关,但我的问题是Chrome而不是Firefox。
安装和配置扩展工作时,使用本地驱动程序。使用RemoteWebDriver的c#实现做同样的事情不会。
在我的测试用例中,远程执行是针对SauceLabs完成的。联系了他们的支持,他们证实通过RemoteWebDriver安装扩展在JAVA实现中工作,但在c#实现中失败。
引用他们的支持单:
"我自己尝试了这个,我自己也遇到了问题,所以这可能是c# Selenium与RemoteWebDriver绑定的缺陷。"
我代码:private IWebDriver GetSauceLabsDriver(){
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
ChromeOptions options = new ChromeOptions();
options.AddExtensions(outPutDirectory + @"'3.1.3_0.crx");
//DesiredCapabilities caps = (DesiredCapabilities)options.ToCapabilities();
var caps = new DesiredCapabilities();
caps.SetCapability(ChromeOptions.Capability, options.Extensions[0]);
caps.SetCapability(CapabilityType.BrowserName, "chrome");
caps.SetCapability(CapabilityType.Version, "53.0");
caps.SetCapability(CapabilityType.Platform, "Windows 10");
caps.SetCapability("deviceName", "");
caps.SetCapability("deviceOrientation", "");
caps.SetCapability("username", "kin");
caps.SetCapability("accessKey", "9cd6-438e-a9635b70953d");
caps.SetCapability("name", TestContext.CurrentContext.Test.Name);
return new RemoteWebDriver(new Uri("http://ondemand.saucelabs.com:80/wd/hub"), caps,
TimeSpan.FromSeconds(600));
}
这是. net绑定用户常犯的错误。您几乎不应该在代码中直接使用DesiredCapabilities
类。相反,在实例化驱动程序之前,您应该几乎完全使用ChromeOptions
类来设置所有选项,并使用.ToCapabilitied()
方法将其转换为可以与RemoteWebDriver
构造函数一起使用的ICapabilities
对象。在您的特定情况下,它看起来像这样:
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));
}