我正在编写一个应该测试任何网站的自动化测试程序。
我想点击文档的某个元素,但在此之前我想验证没有任何AJAX调用正在运行。
我只会有文档,而不是任何AJAX调用URL或类似内容。
有没有办法让我可以在文档上验证没有执行任何AJAX请求。
我该怎么做?
答案 0 :(得分:1)
简单回答:你不能。 HTTP是无状态的,浏览器无法知道是否已发送请求以及我们是否仍在等待回复。
唯一能够知道的是应用程序本身,使用应用程序逻辑。在等待AJAX回复时设置变量,添加到列表,增加计数器......然后可以“监视”变量。
我担心我不知道实现这一目标的优雅方式。在方法中封装所有AJAX调用并使用该方法可能会起作用 - 您可以在上线时禁用测试代码。
答案 1 :(得分:1)
jQuery有几个AJAX event handlers。如果您在ajaxIsExecuting
上将ajaxStart
设置为true并在ajaxStop
上将其设置为false,那么您应该知道AJAX是否正在执行。
答案 2 :(得分:0)
也许你不需要javascript?所以你可以使用这种代码;
javascript:void(d=document);if(frames.length){alert('Script doesnt work in frame');}else
{while((el=d.getElementsByTagName('script')).length
{el[0].parentNode.removeChild(el[0]);};onerror=function(){};d.close();}
答案 3 :(得分:0)
您可以使用以下技术:
var loadingarray=[];
function GetCommand(id, sid) {
if (loadingarray[id]) {return false;}
loadingarray[id] = true;
getCommandResponse = $.ajax({
//send id to server
....
....
});
}
function AjaxFinishedGet(xml, status) {
//retrieve id from server in xml
loadingarray[id] = false;
...
...
}
然后你可以简单地检查loadingarray是否具有真正的价值。如果有;一些用id运行的ajax调用。如果它还没有知道运行中没有任何ajax进程。