如何使用PhantomJS测试网页是否返回404/500?

clo*_*ner 7 javascript phantomjs

我是PhantomJS和Javascript的新手,我正在研究一个测试加载时间的脚本,我希望它能够检测到在测试它时是否遇到404/500错误,并在console.log中显示和消息. .代码如下:

var page = require('webpage').create(), t, address;
t = Date.now();

var testArray =
['someURL'];

function loadTest(testURL)
{
address = testURL;
page.open(address, function (status) {
    if (status !== 'success') {
        console.log('FAIL to load the address' + address);
return;
    }

});
}

for(var i = 0; i < testArray.length; i++)
{
loadTest(testArray[i]);
t = Date.now() - t;
console.log('Testing ' + testArray[i]);
console.log('Loading time ' + t + ' msec\n');
}
phantom.exit();
Run Code Online (Sandbox Code Playgroud)

非常感谢帮助.谢谢

fou*_*ama 9

您可能想要查看onResourceReceived页面对象的回调,您应该能够从那里获得所需的内容.(API文档...)

这是一个人为的例子,它将为作为请求的一部分检索的每个资源返回状态代码,但第一个将是页面本身(即,与支持JS或CSS等相反). ):

var page = require('webpage').create();

page.onResourceReceived = function(res) {
  if (res.stage === 'end') {
    console.log('Status code: ' + res.status);
  }
};

page.open('http://some.url/that/does-not-exist', function() {
  phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)

当然,这假设服务器实际上将返回404(例如,200伪装成404) - 但是这些行中的某些内容应该可以为您提供所需的内容.