Кукловод и драматург хромируют головные ошибки при создании скриншота

В настоящее время я разрабатываю скрипт node.js, который должен запускать экземпляр хрома с заголовком с помощью Puppeteer, а затем каждые 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, но та же ошибка возникает при использовании его с хромом. Может кто-нибудь помочь.

1 ответ

Решение

В 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. Пожалуйста, не стесняйтесь следить и задавать вопросы / запрашивать функции здесь!

Другие вопросы по тегам