我有一个Web应用程序(MVC4,KnockOut),我正在尝试使用CodedUI进行测试。其中一个屏幕上有一个表单,其中包含一堆 select 标记,以及一个按钮,该按钮具有敲击绑定,在单击时调用WebAPI。在WebAPI调用之后,用户将被重定向到另一个屏幕。
当我手动使用此屏幕时,我可以选择值,然后单击按钮,应用程序按预期运行:调用WebAPI,如果成功,则会有重定向。
但是,当我使用CodedUI查找并单击按钮时,我会弹出一个询问我是否确定要离开页面的弹出窗口。我认为这是离开带有表单数据的页面时的默认Internet Explorer行为。我的问题是,为什么CodedUI自动化会发生这种情况,但是当我手动点击按钮时呢?
我正在使用IE11和VS2012 Premium Update 4.以下是我的UI自动化代码的一小部分:
var button = new HtmlButton {Container = BrowserWindow};
button.SearchProperties.Add(HtmlControl.PropertyNames.Title, "My button title");
Mouse.Click(button);
答案 0 :(得分:0)
我设法发现在使用AJAX调用WebAPI的函数中,我们首先禁用onbeforeunload事件。但是,当CodedUI单击按钮时,似乎没有调用它。我设法使用
解决了这个问题BrowserWindow.ExecuteScript("window.onbeforeunload = null;");
但是,我仍然无法弄清楚为什么我需要这样做......