google-chrome - 可以使用 Puppeteer 从 headless chrome 以编程方式生成 har 文件吗?

标签 google-chrome puppeteer har

我想使用 puppeteer 控制 headless chrome 实例,拍摄快照并单击各种页面元素,同时捕获 har 文件。这可能吗?我看过API但没有发现任何有用的东西。

最佳答案

Puppeteer 中没有 HAR 生成器助手。但是你可以使用 chrome-har 生成 HAR 文件。

const fs = require('fs');
const { promisify } = require('util');

const puppeteer = require('puppeteer');
const { harFromMessages } = require('chrome-har');

// list of events for converting to HAR
const events = [];

// event types to observe
const observe = [
  'Page.loadEventFired',
  'Page.domContentEventFired',
  'Page.frameStartedLoading',
  'Page.frameAttached',
  'Network.requestWillBeSent',
  'Network.requestServedFromCache',
  'Network.dataReceived',
  'Network.responseReceived',
  'Network.resourceChangedPriority',
  'Network.loadingFinished',
  'Network.loadingFailed',
];

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // register events listeners
  const client = await page.target().createCDPSession();
  await client.send('Page.enable');
  await client.send('Network.enable');
  observe.forEach(method => {
    client.on(method, params => {
      events.push({ method, params });
    });
  });

  // perform tests
  await page.goto('https://en.wikipedia.org');
  page.click('#n-help > a');
  await page.waitForNavigation({ waitUntil: 'networkidle2' });
  await browser.close();

  // convert events to HAR file
  const har = harFromMessages(events);
  await promisify(fs.writeFile)('en.wikipedia.org.har', JSON.stringify(har));
})();

Here您可以找到有关此解决方案的文章。

关于google-chrome - 可以使用 Puppeteer 从 headless chrome 以编程方式生成 har 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47418609/

相关文章:

android - Android 设备上的 Ionic 2 中未显示 Typescript sourcemaps

css - 空间出现在 SVG 下方(仅在 Google Chrome 中)

connection - phantomjs如何获取建立连接时间

javascript - 如何使用 Puppeteer 检查元素是否存在于 async/await 中

google-chrome - Chrome HAR 文件大小限制

google-chrome - 有没有办法自动生成har文件?

Android chrome不会在html中播放本地声音文件

css - 如何在 Safari 中显示一种样式而在 Chrome 中显示另一种样式?

google-chrome - 我的容器化 Puppeteer 如何与我的主机 Chrome 通信?

python-3.x - 如何在 Pyppeteer 中禁用图像/CSS?