3
私は、人形を使ってヘッドレスのクロムインスタンスをコントロールし、スナップショットを撮って、さまざまなページ要素をクリックしながらharファイルをキャプチャしたいと考えています。これは可能ですか?私はAPIを見てきましたが、有用なものは何も見つかりませんでした。Puppeteerを使用してヘッドレスクロームからharファイルをプログラムで生成することはできますか?
私は、人形を使ってヘッドレスのクロムインスタンスをコントロールし、スナップショットを撮って、さまざまなページ要素をクリックしながらharファイルをキャプチャしたいと考えています。これは可能ですか?私はAPIを見てきましたが、有用なものは何も見つかりませんでした。Puppeteerを使用してヘッドレスクロームからharファイルをプログラムで生成することはできますか?
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この解決方法に関する記事があります。
「page.tracing」https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-tracingメソッドを使用できます。収集するデータには、HARファイルの内容やその他の情報がすべて含まれています。 – Everettss