javascript - Puppeteer:一个浏览器实例中的多个屏幕截图

标签 javascript chromium google-chrome-headless puppeteer

所以我想多次截取特定的,但它总是显示Session ClosedTerminated,因此我工作了围绕实现多个屏幕截图打开多个实例。

至少有人可以指导如何在同一个浏览器实例上使用多个实例吗?

我的代码:

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/

相关文章:

c++ - Chrome 使用移动用户代理不工作

selenium-chromedriver - Chromedriver 在 Centos 7 上没有响应

javascript - 用 Perl 替换 HTML 文件的 JavaScript 代码

javascript - 如何动态阅读RSS

javascript - Javascript 中的 CFML

Javascript:在 For 循环中等待一个(或多个)条件

css - Chromium 和 Google Chrome 中的 Ubuntu 字体不同

google-chrome - 您如何使用 Chrome 调试器协议(protocol)从时间戳导出挂墙时间?

java - org.openqa.selenium.WebDriverException : unknown error: Chrome failed to start: crashed (headless chrome)

javascript - ubuntu 中未获取 puppeteer 脚本的内容