关于多个对话框的WatiN和IE9问题

本文关键字:IE9 问题 WatiN 于多个 对话框 | 更新日期: 2023-09-27 17:59:03

我使用的是WatiN的最新版本(2.1.0.1196)。

我有一个aspx页面加载到DynamicsCrm中的IFrame中。页面上有一个按钮可以打开并形成模式对话框。到目前为止,除了特定的用例外,大多数测试用例都能正确使用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似乎也不起作用。老实说,我不知道在这种情况下我是否正确地使用了对话框处理程序,但我可以单击其他确认对话框上的ok按钮,这些按钮源自其他页面上的按钮。这有点独特,因为它是从模式对话框而不是页面生成的。

我还尝试使用这个自定义处理程序(C#WatiN-添加AlertDialogHandler以在每个Alert对话框窗口上单击ok按钮),但没有结果。

提前谢谢。

关于多个对话框的WatiN和IE9问题

太难了。我建议一个变通方法:在大多数情况下,您可以使用键盘关闭对话框。这样您就可以发送键来关闭对话框。仅供参考。