带木偶的浏览器自动化
#puppeteer #node

Puppeteer是自动化浏览器任务的无头浏览器。这是一些功能的列表:

  • 关闭无头模式
  const browser = await puppeteer.launch({
    headless: false
    // ...
  });
  • 将视口大小调整到窗口大小
  const browser = await puppeteer.launch({
    // ...
    defaultViewport: null
  });
  • 模拟屏幕如何通过emulateMediaType方法显示给用户
  await page.emulateMediaType('screen');
  • 将页面保存为具有指定路径,格式,比例因子和页面范围的PDF文件
  await page.pdf({
    path: 'path.pdf',
    format: 'A3',
    scale: 1,
    pageRanges: '1-2',
    printBackground: true
  });
  • 使用先前存在的用户的凭据跳过登录某些网站。用户数据目录是chrome://version页面的Profile Path值的父。
  const browser = await puppeteer.launch({
    // ...
    args: [
      '--user-data-dir=C:\\Users\\<USERNAME>\\AppData\\Local\\Google\\Chrome\\User Data'
    ]
  });
  • 通过从chrome://version URL设置可执行路径来使用Chrome实例而不是Chromium。在运行脚本之前关闭Chrome浏览器
  const browser = await puppeteer.launch({
    executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'
    // ...
  });
  • 等待加载特定元素,然后单击一些元素
  await page.$eval('#header', async (headerElement) => {
    // ...
    headerElement
      .querySelectorAll('svg')
      .item(13)
      .parentNode.click();
  });
  • 在某些元素上触发悬停事件
  await page.$eval('#header', async (headerElement) => {
    const hoverEvent = new MouseEvent('mouseover', {
      view: window,
      bubbles: true,
      cancelable: true
    });

    headerElement.dispatchEvent(hoverEvent);
  });