12

我正在尝试在 asp.net MVC4 应用程序上运行 Coded-UI 测试项目。该应用程序包含涉及的各种 ajax 调用。当我手动测试它时,它工作正常,但是当我使用 coded-ui 测试项目测试它时,它会中断,因为在 ajax 调用中,回调函数不会被调用。谁能告诉我我在这里想念什么。?提前致谢。

4

1 回答 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 回答