2011-06-14 61 views
2

我正在使用WatiN(2.1.0.1196)的最新版本4/12/2011版本。關於WatiN和IE9關於多個對話框的問題

我有一個aspx頁面加載到Dynamics Crm的IFrame中。頁面上有一個按鈕,可打開並顯示模式對話框。到目前爲止,除特定用例外,大多數測試用例都可以正常使用WatiN。

如果在模態對話框中設置了特定的控件組合,用戶按下提交按鈕後將彈出確認對話框。如果用戶選擇確定,它將繼續提交執行,如果取消它將返回到模態對話框。此確認對話框出現時,測試超時。我似乎無法讓處理程序安裝程序正確地捕獲確認對話框。

下面是測試方法,我一直在努力:

[TestMethod] 
    public void Add_New_Post_To_Record_Public_NotOnBehalf_NoSub_No_Notifications() 
    { 
     using (var browser = new IE("URL to the IFRAME")) 
     {     
      var approveConfirmDialog = ReturnDialogHandler.CreateInstance(); 
      var confirmCode = Guid.NewGuid(); 

      //logon to CRM 
      logonToADFS(browser); 

      var recordPage = browser.Page<DiscussionRecordpage>(); 
      recordPage.CreateNewPostButton.ClickNoWait(); 

      HtmlDialog dialog = browser.HtmlDialog(Find.ByTitle("New Post")); 
      var messageText = dialog.TextField(Find.ByClass("required")); 
      messageText.TypeText("Type some text. Confirmation code: " + confirmCode.ToString()); 

      var button = dialog.Button(Find.ByClass("submit-button")); 

      using (new UseDialogOnce(browser.DialogWatcher, approveConfirmDialog)) 
      { 
       button.ClickNoWait(); 
       approveConfirmDialog.WaitUntilExists(); 
       approveConfirmDialog.OKButton.Click(); 
      } 
      browser.WaitForComplete(); 

      Assert.IsTrue(browser.ContainsText(confirmCode.ToString())); 
     } 
    } 

我已經嘗試了一些不同的變化都具有相同的結果。我假設我需要使用ReturnDialogHanlder.CreateInstance()方法來實現IE9的兼容性,但標準ConfirmDialogHandler似乎也不起作用。老實說,在這種情況下,我不知道我是否正確使用了對話框處理程序,但是我可以單擊從其他頁面上的按鈕生成的其他確認對話框上的確定按鈕。這有點獨特,因爲它是從模態對話而不是頁面產生的。

我也試過使用這個自定義處理程序(C# WatiN - Add an AlertDialogHandler to click ok button on every Alert dialog window)沒有結果。

在此先感謝。

回答

2

太難了。我建議一種解決方法:大多數情況下,您可以使用鍵盤關閉對話框。所以你可以sendkeys關閉對話框。只是FYI。

+0

花了一些額外的努力終於讓周圍的事件發生,但對話框正確關閉。我從來沒有想過使用SendKeys。謝謝! – 2011-06-21 15:01:01