2011-12-15 58 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"))