[英]Puppeteer: multiple screenshots in one browser instance
so I want to screenshot a specific class
multiple times, but all the time it would say Session Closed
or Terminated
, therefore I worked around implementing multiple screenshots opening multiple instances. 所以我想多次截取一个特定的
class
,但是它总是会说Session Closed
或Terminated
,因此我开始实现打开多个实例的多个屏幕截图。
Could someone at least guide how to multiple instances on the same browser instance? 有人至少可以指导如何在同一个浏览器实例上运行多个实例吗?
my code
: my code
:
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(); })();
Just running two screenshot commands consecutively without calling browser.close()
works fine: 只需连续运行两个屏幕截图命令而无需调用
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.