我刚开始使用Phantom / Casper。
到目前为止,我可以使用此代码列出页面所拥有的所有资源:
casper.on('resource.received', function (resource) {
casper.echo(resource.url);
});
到目前为止一切顺利。
现在我试图将它与我从文档中收集和混合的一大块代码合并。我想加载每个资源,然后打印出丢失的URL:
casper.on('resource.received', function (resource) {
// casper.echo(resource.url);
casper.Open(resource.url, function (resource) {
this.on('http.status.404', function (resource) {
this.echo('missing:' + resource.url);
});
});
});
它很乱,但这就是我所拥有的。它无法打开资源(ln 3),控制台显示没有活动。
如何重写此内容以迭代资源并检查它们是否为404?
(我在我的例子中知道我没有迭代资源,我很想使用eachthen(),但是我不清楚我是否可以在'test'原型中使用通用的casperJS方法。抱歉,我希望这不会太长)
答案 0 :(得分:1)
CasperJS' resource.received
基于PhantomJS' onResourceReceived
。从文档中可以看出,您只需访问resource.status
即可。无需显式加载资源。
casper.on('resource.received', function (resource) {
if (resource.stage === "end" && resource.status === 404) {
this.echo('missing:' + resource.url);
};
});
顺便说一句,你可能是casper.open
而不是casper.Open
。