我正在尝试在asp.net MVC4应用程序上运行Coded-UI测试项目。 该应用程序包含涉及的各种ajax调用。 当我手动测试它,它工作正常,但当我通过使用编码ui测试项目测试它, 它会中断,因为在ajax调用中,回调函数不会被调用。 谁能告诉我这里我缺少什么? 提前谢谢。
答案 0 :(得分:20)
出了什么问题
Microsoft的Coded UI浏览器注入javascript来填充XMLHttpRequest对象以进行跟踪。页面中的任何ajax调用都将使用此填充程序而不是真正的XMLHttpRequest。垫片假定您的完成回调附加到XMLHttpRequest的onreadystatechange属性,但jQuery 2.0使用新的onload和onerror事件,因此垫片永远不会被回调调用。
解决方法强>
解决方法是将以下内容添加到测试项目的App.config文件中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="WebWaitForReadyLevel" value="3"/>
</appSettings>
</configuration>
将WebWaitForReadyLevel设置为3可阻止Coded UI WebBrowser注入javascript以跟踪ajax调用和计时器。 jQuery将获得一个真正的XMLHttpRequest,你的ajax回调将再次运行。