timeout - 使用 puppeteer,在 TimeoutError 上截图当前状态

标签 timeout puppeteer

我尝试使用 puppeteer 对网站进行屏幕截图,但在速度较慢的网站上,我收到 TimeoutError

在这种情况下,我想获取当前页面状态的屏幕截图 - 这可能吗?如果是这样,怎么办?

代码示例:

const puppeteer = require('puppeteer');

let url = "http://...";
let timeout = 30000;
(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page
        .goto(url, {waitUntil: 'load', timeout: timeout}).then(async () => {
            await page
                .screenshot({path: 'example.png'})
                .catch(error => console.error(error));
        })
        .catch(error => {
            if (error.name === "TimeoutError") {
                // -----> calling await page.screenshot({path: 'example.png'}) gets stuck
            } else {
                console.error(error);
            }

        });
    await browser.close();
})();

最佳答案

在开发中使用puppeteer时不要使用browser.close,因为这可能会导致浏览器关闭和puppeteer崩溃。

const puppeteer = require('puppeteer')

let url = "https://www.tokopedia.com"
let filename = 'timeout.png'
let timeoutNum = 30000

;(async () => {
    const browser = await puppeteer.launch({
        headless: false
    });
    const [page] = await browser.pages ()

    page.setViewport ({ width: 1366, height: 768 })

    try {
        await page.goto(url, {waitUntil: 'networkidle0', timeout: timeoutNum}).then(async () => {
            await page.screenshot({ path: 'example.png', fullPage: true })
        })
    } catch (error) {
        if (error.name === "TimeoutError") {
            console.log (error.name)
            console.log (`Screenshot saved as ${filename}`)
            await page.screenshot({ path: filename, fullPage: true })
        } else {
            console.log (error)
        }
    }
})()

关于timeout - 使用 puppeteer,在 TimeoutError 上截图当前状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59272807/

相关文章:

javascript - 如何使用 puppeteer 的 x/y 坐标单击元素?

javascript - 如何跟踪事件发送了多少次?

nunit - "Inverted"NUnit 测试中的超时功能

linux - 调用内核级函数比clock()更快

jquery - 每当将元素添加到 DOM 时,将类添加到元素

javascript - Puppeteer - page.$$ ('' ).length 返回未定义

javascript - 无法使用 puppeteer 从图像列表中获取 url

javascript - 从 puppeteer PDF 中删除分页符?

timeout - Cassandra 频繁读写超时

javascript - 使用 HttpInterceptor 的 Angular 1.5 超时