2017-11-21 19 views
3

私は、人形を使ってヘッドレスのクロムインスタンスをコントロールし、スナップショットを撮って、さまざまなページ要素をクリックしながらharファイルをキャプチャしたいと考えています。これは可能ですか?私はAPIを見てきましたが、有用なものは何も見つかりませんでした。Puppeteerを使用してヘッドレスクロームからharファイルをプログラムで生成することはできますか?

+1

「page.tracing」https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-tracingメソッドを使用できます。収集するデータには、HARファイルの内容やその他の情報がすべて含まれています。 – Everettss

答えて

1

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この解決方法に関する記事があります。

関連する問題