Puppeteer:page.screenshot 调整视口大小

use*_*924 9 javascript puppeteer

我是木偶师的新手,所以如果这是一个菜鸟错误,请原谅。

傀儡师版本:6.0.0 / 9.0.0 / 10.0.0

我正在 puppeteer 模式下拍摄 page.screenshot headless:false。闪烁一秒钟,在截取屏幕截图的那一刻,视口似乎会调整大小(几乎变小一半),然后我们回到完整大小,直到下一个屏幕截图。

这些是我的相关代码位:

const browser = await puppeteer.launch({
        args: ['--disable-features=site-per-process'],
        ignoreDefaultArgs: ["--hide-scrollbars"],
        headless: false
    });
...

await page.setViewport({
        width: 1000,
        height: 500,
        deviceScaleFactor: 1
    });
...

await page.screenshot({
            encoding: "base64",
            captureBeyondViewport: false
        });
Run Code Online (Sandbox Code Playgroud)

我在网上发现了这个问题,如果您设置的话,他们声称已经修复了captureBeyondViewport: falsehttps ://github.com/puppeteer/puppeteer/issues/7043

我已经使用三个不同版本的 puppeteer 进行了测试(见上文)。闪烁行为随处可见。我在这里做错了什么吗?

小智 4

captureBeyondViewport: false对我来说,只有当我同时设置inpage.screenshotdefaultViewport: nullin时,调整大小才会停止puppeteer.launch

这是完整的代码,没有任何屏幕截图调整大小:

const puppeteer = require('puppeteer');

const wait = (time) => new Promise(function (resolve) { setTimeout(resolve, time) });

(async () => {
  const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox'], headless: false, defaultViewport: null});
  const page = await browser.newPage();
  await page.goto('https://en.wikipedia.org/wiki/Albert_Einstein');
  await page.screenshot({path: 'screenshot.png', captureBeyondViewport: false});
  
  await wait(2000)
  await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)