我试图在asp.net MVC4应用程序上运行一个Coded-UI测试项目.
该应用程序包含各种涉及的ajax调用.
当我手动测试它,它工作正常,但是当我使用编码测试项目测试它,
它会中断,因为在ajax调用中,回调函数不被调用.
有人可以告诉我我在这里失踪了吗?
提前致谢.
该应用程序包含各种涉及的ajax调用.
当我手动测试它,它工作正常,但是当我使用编码测试项目测试它,
它会中断,因为在ajax调用中,回调函数不被调用.
有人可以告诉我我在这里失踪了吗?
提前致谢.
解决方法@H_301_9@
出了什么问题
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,停止编码UI WebBrowser注入javascript以跟踪ajax调用和计时器. jQuery将获得一个真正的XMLHttpRequest,你的ajax回调将再次工作.
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,停止编码UI WebBrowser注入javascript以跟踪ajax调用和计时器. jQuery将获得一个真正的XMLHttpRequest,你的ajax回调将再次工作.