2011-12-15 76 views
1

我有一個應用程序,當你點擊一個鏈接時彈出一個窗口。我有一個watin測試,導航到頁面並單擊鏈接打開彈出窗口。這是我當前的代碼:WatiN對彈出窗口的測試

[Test] 
public void TestCommentBoxInput() 
     { 

       window.GoTo("mylocalurl"); 
       window.Link(Find.ById("popuplink.aspx")).Click(); 
       IE iepopup_1 = IE.AttachTo<IE>(Find.ByUrl("popuplinkurl.aspx")); 
       iepopup_1.TextField(Find.ById("txtComments")).TypeText("Commenttest"); 
     } 

正如你所看到的,我試着將彈出窗口連接到創建的名爲window的瀏覽器。當我運行我的測試時,它只停留在彈出窗口,並且從不在框中輸入文本。我如何才能讓我的程序正常化,現在它是在彈出窗口而不是原始窗口上運行?

編輯:我正在處理模態對話框。

+0

Find.ById(「popuplink.aspx」)看起來很奇怪,它是一個有效的html標識符,但我不會使用href作爲id。你可以通過選擇器找到[href ='popuplink.aspx']來避免那些東西。 – Guillaume86 2011-12-15 17:13:12

回答

0

所以我想通了這個問題,這個問題是我是用一個模式對話框,並處理它們的方式不同。我的新代碼如下萬一有人被卡在同一位置我是在:)

public void TestCommentBox() 
     { 
      window.GoTo("mylocalurl"); 
      window.Link(Find.ById("popuplink.aspx")).ClickNoWait(); 
      HtmlDialog dialog = window.HtmlDialog(Find.ByTitle("TestPopup")); 
      dialog.TextField(Find.ById("Txtcomments")).TypeText("Commmenttest!"); 
     } 

重要的線路有:。

window.Link(Find.ById("popuplink.aspx")).ClickNoWait(); 

請注意,我用的ClickNoWait(),而不是隻是點擊,我不確定爲什麼這會產生變化,但它確實如此!如果有人能解釋說那會很好。

HtmlDialog dialog = window.HtmlDialog(Find.ByTitle("TestPopup")); 

因爲我正在處理一個模態對話框,你必須聲明一個新的HtmlDialog。另外,爲了使用Html對話框,請確保包含Watin.Core.DialogHandlers。我希望這對那裏的人有幫助! :)

0

我覺得Find.ByUrl嘗試做一個精確匹配,嘗試用Find.ByUrl(u => u.Contains("popuplinkurl.aspx"))