У меня есть лучшее решение, использующее html2canvas спереди:
https://gist.github.com/homam/3162383c8b22e7af691085e77cdbb414
или использование его с кукловодом и html2canvas в бэкэнде:
const screenshot = await page.evaluate(async () => {
const canvasElement = await html2canvas($("div")[0], {
// useCORS: true,
});
let image = Canvas2Image.convertToImage(
canvasElement,
$(canvasElement).width(),
$(canvasElement).height(),
"png"
);
console.log(image.src)
return image.src;
})
var fs = require('fs');
// strip off the data: url prefix to get just the base64-encoded bytes
var data = screenshot.replace(/^data:image\/\w+;base64,/, "");
var buf = new Buffer(data, 'base64');
fs.writeFile(`./screenshots/div-${Date.now()}-.png`, buf);
fullкод здесь: https://github.com/davidtorroija/screenshot-of-div-e2e/blob/master/README.md
это лучше, потому что легко сделать скриншот огромного div, и не нужно прокручивать, и вы не потеряете какую-либо часть div