为什么viewport在page.screenshot()上改变了? (木偶)

时间:2019-02-22 13:31:30

标签: javascript base64 screenshot chromium puppeteer

我正在使用puppeteer捕获setInterval中的屏幕截图,我已经设置了视口,但是每个间隔视口都在跳跃,我希望 稳定的看法。

这是我的代码:

try {
    console.log('getting browser');
    const browser = await puppeteer.launch({ headless: true, slowMo: 100,  args: ['--no-sandbox', '--disable-setuid-sandbox', '--single-process']});
    console.log('opening new page');
    page = await browser.newPage();
    console.log('page opened');
    await page.setViewport({ width: 1413, height: 749 });
    console.log('viewport set');
    await page.setUserAgent(config.USER_AGENT);
    console.log('userAgent set');
    await page.goto(msg.data.url, {timeout: 0, waitUntil: ['domcontentloaded']});
    console.log('succesfully connected to ', msg.data.url);

    let uniqueShot;

    let newShot = await page.screenshot({encoding: 'base64'});
    shotInterval =  setInterval(async function () {
        let newShot = await page.screenshot({encoding: 'base64'});
        if (newShot !== uniqueShot) {
            uniqueShot = newShot;
            ws.send(JSON.stringify({title: 'SCREENSHOT', data: uniqueShot}));
        }
    }, 1000);

} catch (e) {
    console.log(e);
}

因此,仅在page.screenshot()采取措施时才会更改。我正在检查base64编码的字符串是否与最后一个字符串相同,并且永远不会相同。

最终结果,我的意思是屏幕截图是整页的,没关系,但是视口确实在跳跃,所以我无法执行其他操作。

是否可以将视口和屏幕截图视口设置为相同?

我该如何解决?

0 个答案:

没有答案