Puppeteer UnhandledPromiseRejectionWarning:错误:节点不可见或不是HTMLElement

时间:2020-05-25 11:55:49

标签: javascript node.js puppeteer

我正在为NodeJS使用'puppeteer'来对本地网页中的一些dom元素进行屏幕截图。似乎可以截取3张图片,然后报告:

UnhandledPromiseRejectionWarning:错误:节点不可见或HTMLElement

以上是我的代码,我不知道为什么要举报此内容,将不胜感激。谢谢。

const puppeteer = require("puppeteer");
const fs = require("fs");
const Q = require("q")

function delay(ms) {
  var deferred = Q.defer();
  setTimeout(deferred.resolve, ms);

  return deferred.promise;
}

const urls = [
  "http://127.0.0.1:5500/index.html",
  "http://127.0.0.1:5500/index-2.html",
  "http://127.0.0.1:5500/index-3.html",
  "http://127.0.0.1:5500/index-5.html",
];

(async () => {
  // Launch a headful browser so that we can see the page navigating.
  const browser = await puppeteer.launch({
    headless: true,
    args: ["--no-sandbox", "--disable-gpu"],
  });
  const page = await browser.newPage();
  await page.setViewport({
    width: 375,
    height: 812,
    isMobile: true,
  }); //Custom Width

  //start shortcut every page
  let counter = 0;
  for (url of urls) {
    await page.goto(url, {
      timeout: 0,
      waitUntil: "networkidle0",
    });
    await delay(100);
    let btnElements = await page.$$("button");

    // let btnElements = await page.document.querySelector('button');
    console.log(btnElements.length);

    for (btn of btnElements) {
      const btnData = await btn.screenshot({
        encoding: "binary",
        type: "jpeg",
        quality: 90,
      });
      let fn = "data/btn" + counter + ".jpg";
      console.log(fn)
      Q.nfcall(fs.writeFileSync, fn, btnData);
      counter++;

    }
  }

  await page.close();
  await browser.close();
})();

0 个答案:

没有答案
相关问题