C# 无法使用Selenium WebDriver在匿名模式下使用C启动Chrome#

C# 无法使用Selenium WebDriver在匿名模式下使用C启动Chrome#,c#,.net,selenium,selenium-webdriver,selenium-chromedriver,C#,.net,Selenium,Selenium Webdriver,Selenium Chromedriver,我试图在匿名模式下使用SeleniumWebDriver启动Chrome,但无法完成。我尝试了所有选项,但无法启动。下面是我的代码片段 case "chrome": ChromeOptions options = new ChromeOptions(); options.AddArgument("--incognito"); //Line XYZ desiredCapabilities = DesiredCapabilities.Chrome(); desired

我试图在匿名模式下使用SeleniumWebDriver启动Chrome,但无法完成。我尝试了所有选项,但无法启动。下面是我的代码片段

case "chrome":
    ChromeOptions options = new ChromeOptions();
    options.AddArgument("--incognito"); //Line XYZ
    desiredCapabilities = DesiredCapabilities.Chrome();
    desiredCapabilities.SetCapability(ChromeOptions.Capability, options);
break;

var capabilities = BuildDesiredCapabilities();
webDriver = new RemoteWebDriver(new Uri(gridHubURL), capabilities,
TimeSpan.FromSeconds(ApplicationConfiguration.RemoteDriverTimeOutValue));
谁能帮我一下我做错了什么?我还在XYZ行中尝试了以下代码选项

任何指针都会非常有用

编辑1 请在这里找到更新的代码

 public IWebDriver CreateDriver()
    {
        var capabilities = BuildDesiredCapabilities();
        webDriver = new RemoteWebDriver(new Uri(gridHubURL), capabilities,
                TimeSpan.FromSeconds(ApplicationConfiguration.RemoteDriverTimeOutValue));            
        webDriver.Manage().Window.Maximize();
        webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(ApplicationConfiguration.TimeOutValue));
        webDriver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(ApplicationConfiguration.TimeOutValue));
        return webDriver;
    }

    private DesiredCapabilities BuildDesiredCapabilities()
    {
        DesiredCapabilities desiredCapabilities;
        switch (browserName.ToLower())
        {
            case "firefox":
                desiredCapabilities = DesiredCapabilities.Firefox();
                break;
            case "chrome":
                desiredCapabilities = DesiredCapabilities.Chrome();
                desiredCapabilities.SetCapability("chrome.switches", "--incognito");
                break;
            case "ie":
                desiredCapabilities = DesiredCapabilities.InternetExplorer();
                desiredCapabilities.SetCapability("ie.ensureCleanSession", true);
                break;
            default:
                desiredCapabilities = DesiredCapabilities.Firefox();
                break;
        }
        return desiredCapabilities;
    }

您应该像这样向可执行文件传递参数:

desiredCapabilities = DesiredCapabilities.Chrome();
desiredCapabilities.SetCapability("chrome.switches", "--incognito");
因此,将参数
--incognito
传递给
chrome.switches
功能应该可以工作

注意:


chrome.switches
功能已经被弃用两年多了。当前支持的功能列表可在官方网站上找到。此外,Selenium项目一段时间以来一直不鼓励使用任意功能,特别是在使用.NET绑定时,.NET绑定引入了特定于浏览器的
选项
类,以避免知道或理解任意功能值。您在原始代码中使用的就是这样一个类,
ChromeOptions
。但是,在如何将
ChromeOptions
类与
RemoteWebDriver
一起使用时,您错过了一个额外的步骤。缺少的一点是,您应该使用
ToCapabilities()
方法将
ChromeOptions
对象转换为
RemoteWebDriver
期望的
icaabilities
对象。您的代码如下所示:

var options = new ChromeOptions();
options.AddArgument("incognito");
var capabilities = options.ToCapabilities();
var driver = new RemoteWebDriver(new URI(gridHubURL), capabilities);

我在找一个c代码。我不确定上面的一个是否会工作DesiredCapabilities=DesiredCapabilities.Chrome();desiredCapabilities.SetCapability(“chrome.switches”,“--incognito”);我已经更新了我的答案。我不知道你在用C#,是我用的。Chrome在正常模式下打开,而不是在匿名模式下打开。在我的编辑中粘贴整个代码谢谢你的回复谢谢你,吉姆。这就是我一直在关注的解决方案。