Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将所需功能传递给ChromeDriver:的构造函数?_C#_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

C# 无法将所需功能传递给ChromeDriver:的构造函数?

C# 无法将所需功能传递给ChromeDriver:的构造函数?,c#,selenium-webdriver,selenium-chromedriver,C#,Selenium Webdriver,Selenium Chromedriver,当我尝试使用 var dc = DesiredCapabilities.Chrome(); var driver = new ChromeDriver(dc); 我得到“无法解析构造函数” 似乎我必须通过ChromeOptions 为什么? 关于这个主题的每个教程/帮助页面都建议我通过DesiredCapabilities 我正在使用Selenium.WebDriver.ChromeDriver版本2.21.0.0。使用dotpeek并查看ChromeDriver构造函数(有7个重载),其中6

当我尝试使用

var dc = DesiredCapabilities.Chrome();
var driver = new ChromeDriver(dc);
我得到“无法解析构造函数”

似乎我必须通过
ChromeOptions

为什么?

关于这个主题的每个教程/帮助页面都建议我通过
DesiredCapabilities


我正在使用Selenium.WebDriver.ChromeDriver版本2.21.0.0。

使用dotpeek并查看ChromeDriver构造函数(有7个重载),其中6个调用ChromeDriver本身下面的构造函数

public ChromeDriver(ChromeDriverService service, ChromeOptions options, TimeSpan commandTimeout)
  : base((ICommandExecutor) new DriverServiceCommandExecutor((DriverService) service, commandTimeout), ChromeDriver.ConvertOptionsToCapabilities(options))
{
}
然后调用RemoteWebdriver上的基本构造函数。这将最后一个参数作为ChromeDriver.ConvertOptionsToCapabilities(选项)传入

查看以下内容:

 private static ICapabilities ConvertOptionsToCapabilities(ChromeOptions options)
    {
      if (options == null)
        throw new ArgumentNullException("options", "options must not be null");
      return options.ToCapabilities();
    }
然后进入options.ToCapabilities:

public override ICapabilities ToCapabilities()
{
  Dictionary<string, object> dictionary = this.BuildChromeOptionsDictionary();
  DesiredCapabilities desiredCapabilities = DesiredCapabilities.Chrome();
  desiredCapabilities.SetCapability(ChromeOptions.Capability, (object) dictionary);
  if (this.proxy != null)
    desiredCapabilities.SetCapability(CapabilityType.Proxy, (object) this.proxy);
  Dictionary<string, object> preferencesDictionary = this.GenerateLoggingPreferencesDictionary();
  if (preferencesDictionary != null)
    desiredCapabilities.SetCapability(CapabilityType.LoggingPreferences, (object) preferencesDictionary);
  foreach (KeyValuePair<string, object> additionalCapability in this.additionalCapabilities)
    desiredCapabilities.SetCapability(additionalCapability.Key, additionalCapability.Value);
public覆盖能力到能力()
{
Dictionary Dictionary=this.BuildChromeOptionsDictionary();
DesiredCapabilities DesiredCapabilities=DesiredCapabilities.Chrome();
desiredCapabilities.SetCapability(ChromeOptions.Capability,(对象)字典);
如果(this.proxy!=null)
desiredCapabilities.SetCapability(CapabilityType.Proxy,(对象)this.Proxy);
Dictionary preferencesDictionary=this.GenerateLoggingPreferencesDictionary();
if(preferencesDictionary!=null)
desiredCapabilities.SetCapability(CapabilityType.LoggingPreferences,(object)preferencesDictionary);
foreach(此.additionalCapabilities中的KeyValuePair additionalCapabilities)
DesiredCapability.SetCapability(additionalCapability.Key,additionalCapability.Value);

您可以在引擎盖下看到,它似乎已经在使用DesiredCapabilities.Chrome(),您不需要将其传递给他人。也许您看到的教程已经过时了?

您可以使用ChromeOptions设置任何特定选项

ChromeOptions options = new ChromeOptions();
options.AddArguments("--disable-extensions");
options.AddArguments("--start-maximized");
options.ToCapabilities();
ChromeDriverService service = ChromeDriverService.CreateDefaultService(Environment.GetEnvironmentVariable("USERPROFILE") + "\\Downloads");
IWebDriver chromeDriver = new ChromeDriver(service, options);
您可以使用-
options.ToCapabilities();
查看功能


您可以使用ChromeOptions来设置任何特定类型的功能-peter.sh/experiments/chromium-command-line-switches。似乎所需的功能只能在Java中添加,或者如果您正在处理InternetExplorerDriver-

我似乎只有5个重载:ChromeDriver()、ChromeDriver(ChromeDriver服务)、ChromeDriver(ChromeDriver服务,ChromeOptions)、ChromeDriver(ChromeDriver服务,ChromeOptions,TimeSpan)和ChromeDriver(ChromeOptions)也许我们有不同的版本,我怀疑其他观点仍然有效。但是你可以使用你选择的反编译器来查看行为是否仍然相同,例如,重载都引用了一个构造函数,而这个构造函数又使用ChromeDriver.ConvertOptionsToCapabilities(选项)调用基本构造函数那么我就无法设置它们了?您可以使用ChromeOptions设置任何特定类型的功能-。似乎只有在Java中或在处理InternetExplorerDriver时才能添加所需的功能-。这些教程都是针对Java的。我现在看到方法名称是小写的。。。