Asp.net mvc 4 CodedUI测试显示“;“您确定要离开吗?”;弹出窗口

Asp.net mvc 4 CodedUI测试显示“;“您确定要离开吗?”;弹出窗口,asp.net-mvc-4,knockout.js,coded-ui-tests,Asp.net Mvc 4,Knockout.js,Coded Ui Tests,我有一个web应用程序(MVC4,KnockOut),我正试图使用CodedUI测试它。其中一个屏幕上有一个表单,其中有一堆select标记,还有一个按钮,当单击该按钮时,有一个敲除绑定调用WebAPI。在WebAPI调用之后,用户被重定向到另一个屏幕 当我手动使用此屏幕时,我可以选择值,然后单击按钮,应用程序将按预期运行:WebAPI将被调用,如果成功,将出现重定向 但是,当我使用CodedUI查找并单击按钮时,会弹出一个对话框,询问我是否确定要离开页面。我认为这是在离开包含表单数据的页面时默

我有一个web应用程序(MVC4,KnockOut),我正试图使用CodedUI测试它。其中一个屏幕上有一个表单,其中有一堆select标记,还有一个按钮,当单击该按钮时,有一个敲除绑定调用WebAPI。在WebAPI调用之后,用户被重定向到另一个屏幕

当我手动使用此屏幕时,我可以选择值,然后单击按钮,应用程序将按预期运行:WebAPI将被调用,如果成功,将出现重定向

但是,当我使用CodedUI查找并单击按钮时,会弹出一个对话框,询问我是否确定要离开页面。我认为这是在离开包含表单数据的页面时默认的InternetExplorer行为。我的问题是,为什么CodedUI自动化会发生这种情况,而不是当我手动单击按钮时

我正在使用IE11和VS2012高级更新4。以下是我的UI自动化代码的一小段:

var button = new HtmlButton {Container = BrowserWindow};
button.SearchProperties.Add(HtmlControl.PropertyNames.Title, "My button title");
Mouse.Click(button);

我设法发现,在使用AJAX调用WebAPI的函数中,我们首先禁用了onbeforeunload事件。尽管如此,当CodedUI单击按钮时,似乎并没有调用它。我通过使用

BrowserWindow.ExecuteScript("window.onbeforeunload = null;");
然而,我仍然不明白为什么我需要这样做