asp.net - これは、WebDriverを使用してJavaScript警告ダイアログを処理する正しい方法ですか?

asp.net exception webdriver javascript

ASP.NET WebDriver APIでは、JavaScriptアラートが存在しない場合に次を実行すると、例外が発生するようです。

browser.SwitchTo().Alert();


IEとFFはどちらもWebDriverExceptionをスローしますが、ChromeはInvalidOperationExceptionをスローします。

これまでのところ、これは動作するように見える唯一のコードです:

try
{
    var alert = browser.SwitchTo().Alert();
    if (alert != null)
        alert.Dismiss();
}
catch (WebDriverException)
{
    // alert was not present in IE or FF
}
catch (InvalidOperationException)
{
    // alert was not present in Chrome
}


例外をキャッチせずに、アラートダイアログが存在することを確認する方法はありますか?
答え
ここでの実際の答えは「いいえ」です。常に例外をキャッチする必要があります。 APIの設計の背後にある論理は、予期するブラウザーの状態を常に認識する必要があるということです。アラートが表示されることが予想される場合は、switchTo()を使用してアラートに切り替えて処理できるはずです。アラートが表示されることが予想され、switchTo()を使用していて、それが存在しない場合、それは例外的な状態であり、例外がスローされます。通常の(例外ではない)ケースはアラートを予期しないため、表示されていないアラートを探す対応する方法はありません。ちなみに、これはfindElement()で採用されているのと同じロジックです。 APIデザイナが間違ったロジックを使用していると主張することはできますが、それが現在のAPIの実装方法です。
関連記事

c# - セキュリティキーを使用した招待

c# - 2つのxmlノードを比較する方法は?

asp.net - ベースページとは何ですか。ベースページがない場合は、Visual Studio 2010で作成できますか?

asp.net - Microsoft.Web.Administrationを使用するために必要なアクセス許可

asp.net - mod_mono:ランダムなコンパイル例外エラー

c# - C#クラスの設計-「プロジェクト」クラスの配置を検討すべき場所

asp.net - SSRSのページの背景色と余白

c# - C#を介してOutlookでメール送信ダイアログを開く

asp.net - ASP.NET MVC3:戻るボタンが機能しない

asp.net - テキストボックス内のカーソル位置を移動する