2017-11-21 8 views
3

인형을 사용하여 머리없는 크롬 인스턴스를 제어하고, 스냅 샷을 찍고 다양한 페이지 요소를 클릭하면서 har 파일을 캡처하고 싶습니다. 이것이 가능한가? API을 살펴 보았지만 유용한 것은 없습니다.Puppeteer를 사용하여 헤드리스 크롬에서 프로그래밍 방식으로 har 파일을 생성 할 수 있습니까?

+1

https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-tracing 메서드를 사용하여 'page.tracing'을 사용할 수 있습니다. 수집하는 데이터에는 HAR 파일과 그 밖의 모든 정보가 들어 있습니다. – Everettss

답변

1

퍼핏 티어에는 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이 솔루션에 대한 기사를 찾을 수 있습니다.