puppeteer 使用技巧 保持浏览器打开,直到显式终止进程

18 min read

ppeteer有头(headful)模式会显示浏览器界面,可以使用DevTools调试应用程序本身。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ devtools: true });

  // 浏览器操作

  // 保持浏览器打开,直到显式终止进程
  await browser.waitForTarget(() => false);

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

puppeteer启动时,设置devtools: true,默认情况下会以有头(headful)模式启动浏览器,并自动打开devtools。使用waitForTarget来保留浏览器进程,直到浏览器被显式关闭。

要让浏览器休眠一段时间,可以使用:

  • setTimeout方法
  • page.waitFor方法

如下所示:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ devtools: true });

  // 浏览器操作

  // 选项1 - 在“setTimeout”结束时resolve一个承诺
  const sleep = duration => new Promise(resolve => setTimeout(resolve, duration));
  await sleep(3000);

  // 选项2 -如果我们有一个页面实例,只需使用' waitFor '
  await page.waitFor(3000);

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

第一种方法只是一个函数,它在setTimeout结束时resolve一个承诺;第二种方法要简单很多,但是需要有一个page实例(我们将在稍后讨论)。