Я использую «puppeteer» для NodeJS для снятия скриншотов некоторых элементов dom на локальных веб-страницах. Кажется, можно сделать 3 снимка экрана, а затем сообщить:
UnhandledPromiseRejectionWarning: Ошибка: узел либо не виден, либо не HTMLElement
выше - это мой код, я не знать, зачем сообщать об этом, помощь будет принята с благодарностью.
const puppeteer = require("puppeteer");
const fs = require("fs");
const Q = require("q")
function delay(ms) {
var deferred = Q.defer();
setTimeout(deferred.resolve, ms);
return deferred.promise;
}
const urls = [
"http://127.0.0.1:5500/index.html",
"http://127.0.0.1:5500/index-2.html",
"http://127.0.0.1:5500/index-3.html",
"http://127.0.0.1:5500/index-5.html",
];
(async () => {
// Launch a headful browser so that we can see the page navigating.
const browser = await puppeteer.launch({
headless: true,
args: ["--no-sandbox", "--disable-gpu"],
});
const page = await browser.newPage();
await page.setViewport({
width: 375,
height: 812,
isMobile: true,
}); //Custom Width
//start shortcut every page
let counter = 0;
for (url of urls) {
await page.goto(url, {
timeout: 0,
waitUntil: "networkidle0",
});
await delay(100);
let btnElements = await page.$$("button");
// let btnElements = await page.document.querySelector('button');
console.log(btnElements.length);
for (btn of btnElements) {
const btnData = await btn.screenshot({
encoding: "binary",
type: "jpeg",
quality: 90,
});
let fn = "data/btn" + counter + ".jpg";
console.log(fn)
Q.nfcall(fs.writeFileSync, fn, btnData);
counter++;
}
}
await page.close();
await browser.close();
})();