使用casper.on(“ resource.requested”),我们可以捕获资源请求并执行评估检查。
在页面加载时,我们将所有网络请求网址推送到一个数组中,然后遍历该数组以查找对GOOGLE Analytics(分析)的调用次数(即_utm.gif)。
// google analytics calls testing
casper.test.begin('Test Container Tags', function suite(test) {
casper.start("http://www.viget.com/", function() {
});
var urls = [],
links = [];
casper.on('resource.requested', function(requestData, resource) {
urls.push(decodeURI(requestData.url));
});
casper.then(function() {
var index = -1;
var found = 0;
for (var i = 0; i < urls.length; i++)
{
index = urls[i].indexOf('__utm.gif');
if (index > -1)
found = found+1;
}
casper.echo('found' + found);
test.assert(found > 0, 'Page Load Test Complete');
});
//Emit "resource.requested" to capture the network request on link click
casper.then(function(self) {
var utils = require('utils');
var x = require('casper').selectXPath;
casper.click(x("//a[data-type]"));
casper.emit('resource.requested');
});
casper.run(function() {
test.done();
});
});
但是,现在下一个Ask是验证超链接click事件上的网络资源请求。试图使用casper.emit(“ resource.requested”)使其工作,但是没有成功。
已经花了整整一天的时间来找到相同的解决方法。在这一点上任何反馈将不胜感激。
最佳答案
单击后可以使用casper.waitForResource()并在那里进行验证。
casper.test.begin('Test Container Tags', function suite(test) {
casper.start("http://www.viget.com/", function() {
});
var urls = [],
links = [];
casper.on('resource.requested', function(requestData, resource) {
urls.push(decodeURI(requestData.url));
});
casper.then(function() {
var index = -1;
var found = 0;
for (var i = 0; i < urls.length; i++)
{
index = urls[i].indexOf('__utm.gif');
if (index > -1)
found = found+1;
}
casper.echo('found' + found);
test.assert(found > 0, 'Page Load Test Complete');
});
//Emit "resource.requested" to capture the network request on link click
casper.then(function(self) {
var utils = require('utils');
var x = require('casper').selectXPath;
casper.click(x("//a[data-type]"));
});
casper.waitForResource(function testResource(resource) {
console.log('----->' + resource.url);
});
casper.run(function() {
test.done();
});
});
关于javascript - 在casper.click()上捕获网络资源请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17857180/