无法使用C#使用Selenium WebDriver以隐身模式启动Chrome

时间:2016-06-30 23:44:58

标签: c# .net selenium selenium-webdriver selenium-chromedriver

我尝试在隐身模式下使用Selenium WebDriver启动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));

任何人都可以帮助我,我在这里做错了吗?我还在Line XYZ中尝试了以下代码选项

任何指针都会有所帮助。

EDIT1 请在此处找到更新的代码。

 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;
    }

2 个答案:

答案 0 :(得分:3)

.NET绑定引入了特定于浏览器的Options类,以避免必须知道或理解任意能力值。您在原始代码中使用了这样的类ChromeOptions。但是,您错过了一个额外步骤,即如何将ChromeOptions类与RemoteWebDriver一起使用。缺少的是您应该使用ToCapabilities()方法将ChromeOptions对象转换为ICapabilities期望的RemoteWebDriver对象。您的代码如下所示:

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

答案 1 :(得分:1)

您应该将参数传递给可执行文件,如下所示:

desiredCapabilities = DesiredCapabilities.Chrome();
desiredCapabilities.SetCapability("chrome.switches", "--incognito");

因此,将参数--incognito传递给chrome.switches功能应该可以。

注意:

chrome.switches功能已被弃用超过两年。可以在官方chromedriver Google Sites page找到当前支持的功能列表。此外,Selenium项目暂时不鼓励使用任意功能,特别是在使用.NET绑定时