【问题标题】:Puppeteer screenshot stop in random URLPuppeteer 屏幕截图在随机 URL 中停止
【发布时间】:2017-11-15 03:29:51
【问题描述】:

我有一个在 Ubuntu 中工作的服务 nodejs,使用 puppeteer 截取页面截图,但在某些页面中,page.screenshot({fullPage: true, type: 'jpeg'}) 方法在某些随机 URL 中不起作用,并且日志中没有显示错误。代码是:

async takeScreenshot() {  
        console.log('trying take Screenshot [...]');
        let image = await this.page.screenshot({fullPage: true, type: 'jpeg'});
        console.log('Completed!');
        return image;
    }

我遇到此问题的页面示例是:https://nuevo.jumbo.cl/mayonesa-hellmanns-751-g-supreme-light/p

【问题讨论】:

  • 它为什么不适合你?

标签: node.js typescript screenshot puppeteer


【解决方案1】:

您似乎没有等到页面完全加载后才截取屏幕截图。你需要'waitUntil':

    const page = await browser.newPage();
    await page.goto(inputImgUrl, {waitUntil: 'networkidle'});

所以整个事情应该是这样的:

(async() => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto(inputImgUrl, {waitUntil: 'networkidle'});
    await page.setViewport(viewPortData);
    await page.screenshot({path: outputFile, type: 'jpeg', quality: 50, clip: cropData});

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

【讨论】:

  • 这是我进入页面的代码: async navigateTo(url) { if (!url) throw new Error('Missing URL'); return await this.page.goto(url, { waitUntil: 'networkidle', networkIdleTimeout : 3000, timeout: 60000 }); }
【解决方案2】:

您没有解释它是如何工作的,或者您期望它如何显示,但我假设它捕获了类似于下图的内容。

当你第一次加载页面时,它会加载这样的东西,这与 puppeteer 无关,因为你没有告诉代码等待一定的时间,如果你这样做,我看不到它在任何地方指定。

对我来说,除了区域设置外,正常的屏幕截图都可以。我用的是0.13版本和下面的代码,

await page.goto("https://nuevo.jumbo.cl/mayonesa-hellmanns-751-g-supreme-light/p", {waitUntil: "networkidle0"});
    await page.screenshot({
        path: "test_google.png",
        fullPage: true
    });
});

【讨论】:

  • 在此代码示例之前,我使用 JS 设置了区域 cookie。所以我没有打开这个页面。
  • 你仍然没有分享更多代码(就像你说你在 JS 中使用了 cookie),或者你没有分享实际问题,或者你所期望的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
相关资源
最近更新 更多