casperjs等待ajax请求结束

在做前端自动化测试的时候可能需要等待某些ajax请求执行完之后再执行比如截图之类的操作, 在实际使用过程中我是这么实现的: var dataUrls = ['http://xxxx.com/dota/data/', 'http://xxxx.tv/dm/']; var counts = {}; casper.on('resource.requested', function(resource) { Array.prototype.map.call(dataUrls, function(url) { if (resource.url.indexOf(url) !== -1) { casper.log("request:" + resource.url, "debug"); counts['requested']++; } }) }); casper.on('resource.received', function(resource) { Array.prototype.map.call(dataUrls, function(url) { if (resource.url.indexOf(url) !== -1 && resource.stage === 'end') { casper.log("responsed:" + resource.url, "debug"); counts['responsed']++; } }) }); 也就是等待包含特定网址的request数和response数相等的时候,认为请求已经完成。 当然,请求完成之后渲染页面和js执行还需要时间,所以最好再wait个几百毫秒,然后再进行后续操作。