测试一个弹出窗口

本文关键字:窗口 一个 测试 | 更新日期: 2023-09-27 18:18:03

我有一个应用程序,当你点击一个链接时,会弹出一个窗口。我有一个等待测试,导航到页面,并单击一个链接打开弹出窗口。这是我当前的代码:

 [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的浏览器。当我运行测试时,它只是停在弹出窗口,从不在框中输入文本。我如何去使我的程序认识到,它现在是在弹出窗口上操作,而不是原来的窗口?

编辑:我正在处理一个模态对话框

测试一个弹出窗口

我觉得Find。ByUrl尝试做一个精确的匹配,尝试与Find.ByUrl(u => u.Contains("popuplinkurl.aspx"))

所以我已经找出了问题,问题是我正在使用模态对话框,它们的处理方式不同。我的新代码如下,以防有人被困在相同的位置,我是在。:)

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();

请注意,我正在使用clickknowait()而不仅仅是Click,我不确定为什么这会产生差异,但它确实如此!如果有人能解释一下那就太好了。

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

因为我正在处理一个模态对话框,你必须声明一个新的HtmlDialog。此外,为了使用Html对话框,请确保包含了Watin.Core.DialogHandlers。我希望这对外面的人有帮助!:)