如何使用casperJS简明地检查404s的网页资源?

时间:2014-10-21 18:50:27

标签: javascript testing http-status-code-404 phantomjs casperjs

我刚开始使用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方法。抱歉,我希望这不会太长)

1 个答案:

答案 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