[英]Iterate over multiple payloads and take multiple screenshots with Puppeteer AWS Lambda
[英]Puppeteer: multiple screenshots in one browser instance
所以我想多次截取一個特定的class
,但是它總是會說Session Closed
或Terminated
,因此我開始實現打開多個實例的多個屏幕截圖。
有人至少可以指導如何在同一個瀏覽器實例上運行多個實例嗎?
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(); })();
只需連續運行兩個屏幕截圖命令而無需調用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.