2016-06-30 34 views
2

Selenium WebDriverをシークレットモードで使用してChromeを起動しようとしていますが、これを実行できません。私はすべてのオプションを試しましたが、起動することはできませんでした。以下は私のコードスニペットですC#を使用して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)); 

誰でも私がここで間違っているのを助けてくれますか?私はまたラインの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; 
    } 

答えて

3

.NETバインディングでは、任意の機能値を知っているか理解していないように、ブラウザ固有のOptionsクラスが導入されました。そのようなクラス、ChromeOptionsを元のコードで使用していました。あなたは、とChromeOptionsクラスをどのように使用するかで、1つの追加ステップを逃しました。欠けている部分は、ChromeOptionsオブジェクトをRemoteWebDriverが期待するICapabilitiesオブジェクトに変換するためにToCapabilities()メソッドを使用する必要があるということです。あなたのコードは次のようになります:

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

ジムありがとうございます。これは私が探していた解決策です。 –

1

次のような実行可能ファイルにパラメータを渡す必要があります。

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

ので、機能は動作するはずchrome.switchesにパラメータ--incognitoを渡します。

注:

chrome.switches機能は、2年以上にわたって廃止されました。現在サポートされている機能のリストは、公式chromedriver Google Sites pageにあります。さらに、Seleniumプロジェクトでは、特に.NETバインディングを使用しているときに、Seleniumプロジェクトで使用することをお勧めしません。

+0

返信いただきありがとうございます。これはJavaコードですか? –

+0

私はC#コードを探しています。上記のものがうまくいくかどうかはわかりません。 –

+0

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

関連する問題