我正在尝试在 asp.net MVC4 应用程序上运行 Coded-UI 测试项目。该应用程序包含涉及的各种 ajax 调用。当我手动测试它时,它工作正常,但是当我使用 coded-ui 测试项目测试它时,它会中断,因为在 ajax 调用中,回调函数不会被调用。谁能告诉我我在这里想念什么。?提前致谢。
问问题
3441 次
1 回答
20
出了什么问题
Microsoft 的 Coded UI 浏览器注入 javascript 来填充 XMLHttpRequest 对象以进行跟踪。页面中的任何 ajax 调用都将使用这个 shim 而不是真正的 XMLHttpRequest。shim 假定您的完成回调附加到 XMLHttpRequest 的 onreadystatechange 属性,但 jQuery 2.0 使用新的 onload 和 onerror 事件,因此 shim 永远不会调用回调。
解决方法
解决方法是将以下内容添加到您的测试项目的 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 回调将再次起作用。
于 2014-01-27T12:47:30.127 回答