2

我目前正在开发一个 node.js 脚本,该脚本需要使用 Puppeteer 启动一个 headful chromium 实例,然后每 3 秒对页面进行一次屏幕截图,这是我的代码:

const puppeteer = require('puppeteer');

async function init (){
 const browser = await puppeteer.launch({headless: true});
 const page = await browser.newPage();
 await page.goto('https://example.com');
 screenshot(page)
};

async function screenshot(page){

 let buffer = await page.screenshot();
 let imageBuffer = buffer.toString('base64');
 // save imageBuffer to database
 setTimeout(screenshot, 3000, page)
}

我当前的问题是我需要用户仍然能够在浏览器和他的计算机上正常导航,但这不可能,因为:

  1. 正如您在以下视频中看到的那样,制作屏幕截图时页面滞后:https ://youtu.be/Tl2w-qKckkc
  2. 制作屏幕截图时,浏览器窗口会聚焦并位于所有窗口的顶部。

我也尝试过使用 Playwright,但与铬一起使用时会出现同样的错误。有人可以帮忙吗。

4

1 回答 1

3

在 Playwright 中,执行以下操作:

// Affects all the platforms.
const page = await browser.newPage({ viewport: null });
// Local fix for those using Apple hardware with Retina displays.
const page = await browser.newPage({ deviceScaleFactor: 2 });

我在https://github.com/microsoft/playwright/issues/2576上发布了详细回复。请随时跟进并在那里提出问题/请求功能!

于 2020-06-15T15:12:11.827 回答