【问题标题】:WatiN testing of a popup弹出窗口的等待测试
【发布时间】:2011-12-15 16:15:42
【问题描述】:

我有一个应用程序,当您单击链接时会弹出一个窗口。我有一个导航到页面并单击链接以打开弹出窗口的 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.properties 的浏览器。当我运行我的测试时,它只会在弹出窗口处停止,并且永远不会在框中输入文本。如何让我的程序重新确定它现在要在弹出窗口而不是原始窗口上运行?

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

【问题讨论】:

  • Find.ById("popuplink.aspx") 看起来很奇怪,它是一个有效的 html 标识符,但我不会使用 href 作为 id。你可以通过选择器 [href='popuplink.aspx'] 来避免这些东西。
  • 弹出窗口本身给我带来了问题,因为当我附加 aspx 文件的直接 URL 并准备好并在运行代码时打开它时,它可以正常工作。所以弹出窗口存在一些问题,这对我来说是个问题。
  • 你试过我的回答命题了吗?
  • 是的,它没有解决我的具体问题。

标签: c# unit-testing watin


【解决方案1】:

我认为 Find.ByUrl 尝试进行完全匹配,尝试使用 Find.ByUrl(u =&gt; u.Contains("popuplinkurl.aspx"))

【讨论】:

    【解决方案2】:

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

    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() 而不仅仅是 Click,我不确定为什么这会有所作为,但确实如此!如果有人能解释一下,那就太好了。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-01
      • 2023-04-03
      • 2011-05-21
      • 2020-02-20
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多