2017-02-05 27 views
1

私は、C#でのクロームドライバインスタンスでDesiredCapabilitiesを実装したいと思いますが、私はそれが不可能であることがわかりますか?たとえば...DesiredCapabilitiesのSelenium C#chromedriver

DesiredCapabilities capabilities = DesiredCapabilities.Chrome(); 
capabilities.SetCapability(CapabilityType.UnexpectedAlertBehavior, "accept");    
Driver = new ChromeDriver(@"C:\Development\Projects\SeleniumObservatoryTests\", capabilities); 

ChromeDriverにオプションが必要なようです。 UnexpectedAlertBehaviorをオプションとして提供する方法はありますか?

答えて

0

Chrome用に動作させることができませんでした。 Firefoxの場合はDesiredCapabilitiesを使用しなければならず、IEの場合はInternetExplorerOptionsを使用する必要がありました。

しかし、私はそれを処理するために書いたいくつかのコードで、Chromeでポップアップを処理するのに成功しています。

マイコードは以下のとおりです。私はあなたと他の人がモーダルダイアログに悩まされるのを助けてくれることを願っています。

/// <summary> 
    /// Returns a true or false if alert is present. 
    /// </summary> 
    /// <returns>true or false</returns> 
    public static bool IsAlertPresent() 
    { 
     try 
     { 
      [YOUR DRIVER HERE].SwitchTo().Alert(); 
      return true; 
     } 
     catch (Exception) 
     { 
      return false; 
     } 
    } 

    /// <summary> 
    /// Verifies if an alert is present or not. If it is, it clicks "Accept". 
    /// </summary> 
    public static void Alert() 
    { 
     try 
     { 
      if (IsAlertPresent()) 
       [YOUR DRIVER HERE].SwitchTo().Alert().Accept(); 

     } 
     catch (Exception ex) 
     { 
      ///Log your errors however you must. 
     } 
    } 

私はそれが幻想的ではないことを知っていますが、それは仕事を完了します。基本的にはアラートに切り替えようとしますが、それがあれば真を返し、そうでなければ偽を返します。 trueの場合、再び切り替えられ、acceptをクリックします。非常に簡単です。まだ私を失敗させていない。

+1

こんにちは。実際には、回避策とほぼ同じコードを使用しています。しかし、iFramesを何度も切り替えると、1つはうまくいく。だから、私は "waitForAlerts"を実行しなければなりませんでした。これは、基本的に、予期しないアラートを捕捉するために数秒待たなければなりませんでした。理想的ではありませんが、今は大丈夫です。 – alex

関連する問題