所以我想多次截取特定的类
,但它总是显示Session Closed
或Terminated
,因此我工作了围绕实现多个屏幕截图打开多个实例。
至少有人可以指导如何在同一个浏览器实例上使用多个实例吗?
我的代码
:
const puppeteer = require("puppeteer");
const SELECTOR = ".octicon";
(async () => {
let screenshotNumber = 0;
async function screenshots() {
const browser = await puppeteer.launch({
headless: true
});
try {
let page = await browser.newPage();
page.setViewport({ width: 1000, height: 600, deviceScaleFactor: 2 });
await page.goto("https://github.com/");
await page.waitForNavigation({ waitUntil: "networkidle" });
const rect = await page.evaluate(selector => {
const element = document.querySelector(selector);
const { x, y, width, height } = element.getBoundingClientRect();
return { left: x, top: y, width, height, id: element.id };
}, SELECTOR);
await page.screenshot({
path: `octicon-${screenshotNumber}.jpg`,
clip: {
x: rect.left,
y: rect.top,
width: rect.width,
height: rect.height
}
});
browser.close();
screenshotNumber++;
} catch (e) {
console.log(e);
browser.close();
}
}
async function run() {
await screenshots();
setTimeout(run, 200);
}
run();
})();
最佳答案
只需连续运行两个屏幕截图命令而不调用 browser.close()
就可以正常工作:
await page.screenshot({
path: `octicon-${screenshotNumber}.jpg`,
clip: {
x: rect.left,
y: rect.top,
width: rect.width,
height: rect.height
}
});
screenshotNumber++;
await page.screenshot({
path: `octicon-${screenshotNumber}.jpg`,
clip: {
x: rect.left,
y: rect.top,
width: rect.width,
height: rect.height
}
});
browser.close();
关于javascript - Puppeteer:一个浏览器实例中的多个屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799200/