2009-04-08 16 views
3

ダイアログが表示され、ハンドラが接続されていない場合は常に、ダイアログが閉じます。これは、アプリケーションが持つさまざまな/簡単な確認のためのコードを追加したくない場合に役立ちます。ダイアログがWatinに表示された場合のデフォルトでのテストの失敗

問題は、このデフォルトの動作を使用すると、単純な問題が気付かないようになることがあります。確認のダイアログが表示されないようにする必要があります。

未処理のダイアログが表示されたときに、正常にテストに失敗する簡単な方法を探しています。うまくいけば、予期しないダイアログエラーであることを知らせるまともなメッセージを与える例外を伴ってダイアログが表示されたときにテストが停止することを意味します。

答えて

3

また、AlertAndConfirmDialogHandlerを使用することもできます。このハンドラは、ポップアップするすべてのアラートまたは確認ダイアログを閉じますが、最初にダイアログに表示されるテキストを取得して保存します。このアラート文字列配列を調べて、Countがゼロであるかどうかを調べることができます。テストクラスのティアダウンまたはFixtureTeardownでこれを行うことができます。

あなたはこのハンドラを使用する方法をお見せするためにunittestのWatiNからテストのコピーを以下に示します。

 [Test] 
    public void AlertAndConfirmDialogHandler() 
    { 
     DialogWatcher dialogWatcher; 

     Assert.AreEqual(0, Ie.DialogWatcher.Count, "DialogWatcher count should be zero before test"); 

     // Create handler for Alert and confirm dialogs and register it. 
     var dialogHandler = new AlertAndConfirmDialogHandler(); 
     using (new UseDialogOnce(Ie.DialogWatcher, dialogHandler)) 
     { 
      Assert.AreEqual(0, dialogHandler.Count); 

      Ie.Button("helloid").Click(); 

      Assert.AreEqual(1, dialogHandler.Count); 
      Assert.AreEqual("hello", dialogHandler.Alerts[0]); 

      // remove the alert text from the queue by using Pop 
      Assert.AreEqual("hello", dialogHandler.Pop()); 

      Assert.AreEqual(0, dialogHandler.Count); 

      // Clear the queue 
      Ie.Button("helloid").Click(); 

      Assert.AreEqual(1, dialogHandler.Count); 

      dialogHandler.Clear(); 

      Assert.AreEqual(0, dialogHandler.Count); 

      dialogWatcher = Ie.DialogWatcher; 
     } 

     Assert.AreEqual(0, dialogWatcher.Count, "DialogWatcher count should be zero after test"); 
    } 

これはまた、オートクローズ動作がよりプラグ可能にするために私をトリガします。ダイアログを自動的に閉じるのではなく、他のハンドラがダイアログを処理できない場合に呼び出されるダイアログハンドラを登録できるといいでしょう。

私はこの方法で問題に直面していますHTH のJeroenバンメネン リードdevのWatiN

+0

が、それはいつか働き、時にはません。 – rahoolm

1

今の私たちは、使用している:それは、次の(醜い)を発行しました

browser.DialogWatcher.CloseUnhandledDialogs = false 

:インターネットながら(」タイムアウトのメッセージを

  1. エラーは、次の操作のタイムアウトとして表示されます使用してエクスプローラビジー ")。
  2. 上記のため、テストで不要な遅延が発生する
  3. 予期しないポップアップが発生したインスタンスは、(処理後に)開いたままになります。
関連する問題