簡體   English   中英

Puppeteer:在一個瀏覽器實例中有多個屏幕截圖

[英]Puppeteer: multiple screenshots in one browser instance

所以我想多次截取一個特定的class ,但是它總是會說Session ClosedTerminated ,因此我開始實現打開多個實例的多個屏幕截圖。

有人至少可以指導如何在同一個瀏覽器實例上運行多個實例嗎?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM