我想扩展我的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());
谢谢!
答案 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特定处理程序