【问题标题】:Issue with WatiN and IE9 regarding multiple dialogs关于多个对话框的 WatiN 和 IE9 问题
【发布时间】:2011-06-14 15:55:30
【问题描述】:

我正在使用 2011 年 4 月 12 日最新版本的 WatiN (2.1.0.1196)。

我在 Dynamics Crm 的 IFrame 中加载了一个 aspx 页面。页面上有一个按钮可以打开和模态对话框。到目前为止,除了一个特定的用例之外,大多数测试用例都可以在 WatiN 上正常工作。

如果在模态对话框上设置了特定的控件组合,则在用户按下提交按钮后会弹出一个确认对话框。如果用户选择 ok 它将继续提交执行,如果取消它将返回到模态对话框。出现此确认对话框时测试超时。我似乎无法正确设置处理程序来捕捉确认对话框。

这是我一直在尝试的一种测试方法:

    [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),但没有结果。

提前致谢。

【问题讨论】:

    标签: c# internet-explorer-9 integration-testing watin


    【解决方案1】:

    太难了。我建议一种解决方法:大多数情况下,您可以使用键盘关闭对话框。所以你可以sendkeys 关闭对话框。仅供参考。

    【讨论】:

    • 花了一些额外的时间才最终让周围的事件也被触发,但对话框正确关闭。我从没想过要使用 SendKeys。谢谢!
    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多