PhantomJS - 处理网络错误

时间:2014-11-27 10:16:13

标签: javascript phantomjs

当我在调试模式下运行PhantomJS脚本时,有时会看到此错误:[DEBUG]网络 - 资源请求错误:5("取消操作")。

当我运行脚本1000次时,我发现此错误1或2次。我想在不调试模式的情况下运行我的脚本来捕获它,但我不知道如何!

我尝试了几个错误处理程序:

phantom.onError = function(msg, trace) {
  console.log("PhantomJS onError\n");
};

page.onError = function(msg, trace) {
  console.log("PhantomJS onError\n");
};

page.onResourceError = function(resourceError) {
  console.log("PhantomJS onResourceError\n");
};

page.onResourceTimeout = function(req) {
  console.error('PhantomJS onResourceTimeout\n');
};

page.onLoadFinished = function(status) {
  if (status != 'success') {
    console.error('PhantomJS onLoadFinished Error\n');
  }
};

你对我有什么想法吗?我怎么能抓到这个错误?我在Unix上使用PhantomJS 1.9.7 x64。

谢谢,

1 个答案:

答案 0 :(得分:0)

这个问题可能已经过时但我今天也遇到了同样的问题并找到了解决方法:

var numberOfRequests = 0;
page.onResourceReceived = function(response) {
    if (numberOfRequests === 0) {
        // if status of first resource is NULL there was a network error
        if (response.status === null) {
            console.log('[ERROR] Loading page failed: Network error');
            phantom.exit();
        }
    }

    numberOfRequests++;
};

使用phantomJS 2.1进行测试。希望这可以帮助其他人。