WatiN驾驶IE“你确定要离开这个页面吗?”弹出

时间:2012-02-15 15:01:33

标签: watin

我想扩展我的WatiN自动化测试以驱动一个页面,防止用户意外离开页面而不保存更改。

该页面使用“beforeunload”技术来寻求用户的确认:

$(window).bind('beforeunload', function (event) {
    if (confirmationRequired) {
        return "Sure??";
    }
});

我的WatIn测试是使用IE驱动页面。我找不到让WatIn附加到弹出对话框的方法,所以我可以从我的测试中控制它。

以下所有内容都失败了(硬编码字符串引用了我在弹出窗口中可以看到的字符串):

Browser.AttachTo<IE>(Find.ByTitle("Windows Internet Explorer");
browser.HtmlDialog(Find.FindByTitle("Windows Internet Explorer));
browser.HtmlDialog(Find.FindByTitle("Are you sure you want to leave this page?));
browser.HtmlDialog(Find.FindFirst());

谢谢!

1 个答案:

答案 0 :(得分:9)

您需要创建并添加对话框处理程序。

示例转到示例网站,点击链接,点击确认对话框上的离开页面:

IE browser = new IE();
browser.GoTo("http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm");

WatiN.Core.DialogHandlers.ReturnDialogHandlerIe9 myHandler = new WatiN.Core.DialogHandlers.ReturnDialogHandlerIe9();

browser.AddDialogHandler(myHandler);
browser.Link(Find.ByUrl("http://www.microsoft.com")).ClickNoWait();
myHandler.WaitUntilExists();

myHandler.OKButton.Click();
browser.RemoveDialogHandler(myHandler);

以上是在WatiN2.1,IE9,Win7上工作。如果使用IE8或之前,您可能需要使用ReturnDialogHandler对象而不是Ie9特定处理程序