Puppeteer:如何在page.goto().catch中获取httpcode?

标签 puppeteer

我想打开一个 url 并收集其 httpcode 和错误,但我无法在 goto().catch 中获取其 httpcode。

let result = {};
page.goto(url)
            .then(res => {
                result['http-code'] = res.status();
            })
            .catch(err => {
                result['http-code'] = '?'; // TODO: get http-code in goto().catch
                result['page-error'] = err + '';
            })
            .then(() => {
                res.json(result);
            });

最佳答案

这是不可能的。

TL;DR

因为page.goto当远程服务器返回任何有效的 HTTP 状态代码时,该方法不会抛出错误,包括 404“未找到”和 500“内部服务器错误”。可以通过调用response.status()来检索此类响应的状态代码;

page.goto如果出现以下情况,将会抛出错误:

  • 存在 SSL 错误(例如自签名证书)。
  • 目标网址无效。
  • 导航期间超时。
  • 远程服务器没有响应或无法访问。 主要资源加载失败。

NOTE page.goto either throws an error or returns a main resource response. The only exceptions are navigation to about:blank or navigation to the same URL with a different hash, which would succeed and return null.

关于Puppeteer:如何在page.goto().catch中获取httpcode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58722044/

相关文章:

javascript - 按类名称收集元素,然后单击每个元素-Puppeteer

javascript - Puppeteer 同步定义浏览器和页面

node.js - Puppeteer - 新窗口关于 :blank

javascript - Puppeteer 无法可视化完整的 SVG 图表

javascript - Puppeteer:使用 page.querySelectorAll() 不是函数

node.js - Heroku 上的 Puppeteer pdf 空白

javascript - 如何将回调作为变量传递给 puppeteer 中的 page.evaluate?

javascript - 预渲染 : difference between puppeteer/rendetron and prerender. io

javascript - 是否可以在 nodejs+puppeteer 中包含一个源文件来添加功能?

javascript - 使用 jest-image-snapshot 比较图像时如何忽略 body 标签中的区域或元素?