木偶操纵者无法捕获失败的请求&错误 [英] Puppeteer can't catch failing request & errors

查看:18
本文介绍了木偶操纵者无法捕获失败的请求&错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试从失败的请求和js错误中收集数据。

我正在使用以下站点:https://nitzani1.wixsite.com/marketing-automation/3rd-page

该站点请求https://api.fixer.io/1latest,返回状态代码404,

该页还包含以下js错误:

"Uncaught (in promise) Fetch did not succeed"

我尝试编写以下代码来捕获404和js错误,但未能成功。 不确定我做错了什么,有没有办法解决它?

const puppeteer = require('puppeteer');

function wait (ms) {
    return new Promise(resolve => setTimeout(() => resolve(), ms));
}

var  run = async () => {
    const browser = await puppeteer.launch({
        headless: false,
        args: ['--start-fullscreen']
    });

    page = await browser.newPage();

    page.on('error', err=> {
        console.log('err: '+err);
    });

    page.on('pageerror', pageerr=> {
        console.log('pageerr: '+pageerr);
    });

    page.on('requestfailed', err => console.log('requestfailed: '+err));

    collectResponse = [];

    await page.on('requestfailed', rf => {
        console.log('rf: '+rf);
    });

    await page.on('response', response => {
        const url = response.url();
        response.buffer().then(
            b => {
                // console.log(url+' : '+response.status())
            },
            e => {
                console.log('response err');
            }
        );
    });
    await wait(500);

    await page.setViewport({ width: 1920, height: 1080 });
    await page.goto('https://nitzani1.wixsite.com/marketing-automation/3rd-page', {
    });
};

run();

推荐答案

完整的工作答案是:

const puppeteer = require('puppeteer');

const run = async () => {
    const browser = await puppeteer.launch({
        headless: true
    });

    const page = await browser.newPage();
    // Catch all failed requests like 4xx..5xx status codes
    page.on('requestfailed', request => {
        console.log(`url: ${request.url()}, errText: ${request.failure().errorText}, method: ${request.method()}`)
    });
    // Catch console log errors
    page.on("pageerror", err => {
        console.log(`Page error: ${err.toString()}`);
    });
    // Catch all console messages
    page.on('console', msg => {
        console.log('Logger:', msg.type());
        console.log('Logger:', msg.text());
        console.log('Logger:', msg.location());

    });

    await page.setViewport({ width: 1920, height: 1080 });
    await page.goto('https://nitzani1.wixsite.com/marketing-automation/3rd-page', { waitUntil: 'domcontentloaded' });
    await page.waitFor(10000); // To be sure all exceptions logged and handled
    await browser.close();
};

run();

保存在.js文件中并轻松运行。

这篇关于木偶操纵者无法捕获失败的请求&错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆