如何在thenopen中的casper.js中获得响应状态404,而不是未定义?[英] How to get response status 404 in casper.js within thenOpen instead of undefined?

问题描述

任何想法,为什么下面的代码不会在response var或http.status.404事件中捕获404?

我使用phantomjs 1.9,casperjs 1.0.2和Windows 7

运行此操作.
var casper = require("casper").create(),
    utils = require('utils');

casper.start();

casper.thenOpen('http://www.google.com/sadfafsdgfsd', function(response) {
  casper.capture('test.png');
  utils.dump(response);
});

casper.on('http.status.404', function(resource) {
  this.echo('wait, this url is 404: ' + resource.url);
});

casper.run(function() {
  console.log('End');
  casper.exit();
});

理想情况下,我喜欢在thenopen()中捕获404.如何做?

更新1:

我尝试了这个

casper.thenOpen('http://www.google.com/sadfafsdgfsd', function(response) {
  casper.capture('test.png');
  utils.dump(response);

    if(this.status(false)['currentHTTPStatus'] === 404) {
        console.log('Error 404');
    } else {
        console.log('No Error 404');
    }

});

这是输出:

undefined
No Error 404
End

仍然没有意义.

更新2:

我在这里尝试了404checker.js >

casperjs 404.js http://www.google.com/sadfafsdgfsd

输出:

URI.js loaded
Starting
http://www.google.com/sadfafsdgfsd
http://www.google.com/sadfafsdgfsd is okay (HTTP 200)
1 new links found on http://www.google.com/sadfafsdgfsd
All done, 1 links checked.

那是怎么回事!?

推荐答案

我刚刚运行了您的代码,似乎可以在事件中捕获404错误.如果您想在thneopen()中捕获它,那么类似的东西会起作用:

casper.thenOpen('http://www.google.com/sadfafsdgfsd', function() {
    if(this.status(false)['currentHTTPStatus'] === 404) {
        console.log('Error 404');
    } else {
        console.log('No Error 404');
    }
});

您可以直接使用响应,在这种情况下,响应['状态']将为404.

casper.thenOpen('http://www.google.com/sadfafsdgfsd', function(response) {
    if(response['status'] === 404) {
        console.log('Error 404');
    } else {
        console.log('No Error 404');
    }
});

本文地址:https://www.itbaoku.cn/post/1740056.html