프로젝트에서 Puppeteer를 사용하려면 먼저 Puppeteer를 설치해야 합니다.
설치
npm i puppeteer
# or "yarn add puppeteer"
Puppeteer를 설치하면 API와 호환이 보장되는 최신 버전의 Chromium(Mac에서는 약 170MB, Linux는 282MB, Win 버전은 약 280MB)을 다운로드합니다. 다운로드를 건너뛰거나, 다른 경로로 다운로드하거나, 다른 브라우저를 다운로드하려면 환경 변수를 참고하세요.
꼭두각시 인형
버전 1.7.0부터 puppeteer-core
패키지를 게시합니다. 이 버전의 Puppeteer는 기본적으로 브라우저를 다운로드하지 않습니다.
npm i puppeteer-core
# or "yarn add puppeteer-core"
puppeteer-core
은 기존 브라우저 설치를 실행하거나 원격 브라우저에 연결하기 위한 경량 버전의 Puppeteer로 고안되었습니다. 설치하는 Puppeteer-core 버전이 연결하려는 브라우저와 호환되는지 확인합니다.
puppeteer와 Puppeteer-core 비교를 참고하세요.
사용
Puppeteer는 Node의 최신 유지보수 LTS 버전을 따릅니다.
Puppeteer는 다른 브라우저 테스트 프레임워크를 사용하는 사람들에게 익숙할 것입니다.
Browser
인스턴스를 만들고 페이지를 연 다음 Puppeteer의 API를 사용하여 조작합니다.
스크린샷 저장
예를 들어 https://example.com
로 이동하여 스크린샷을 example.png
로 저장하려면 다음 코드를 example.js
에 저장합니다.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
Puppeteer는 초기 페이지 크기를 800×600픽셀로 설정하여 스크린샷 크기를 정의합니다. 페이지 크기는 Page.setViewport()를 사용하여 맞춤설정할 수 있습니다.
PDF 만들기
파일을 hn.js
로 저장합니다.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', {
waitUntil: 'networkidle2',
});
await page.pdf({ path: 'hn.pdf', format: 'a4' });
await browser.close();
})();
명령줄에서 스크립트를 실행합니다.
node hn.js
PDF 만들기에 관한 자세한 내용은 Page.pdf()를 참고하세요.
페이지 맥락에서 스크립트 평가
파일을 get-dimensions.js
로 저장합니다.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
// Get the "viewport" of the page, as reported by the page.
const dimensions = await page.evaluate(() => {
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight,
deviceScaleFactor: window.devicePixelRatio,
};
});
console.log('Dimensions:', dimensions);
await browser.close();
})();
명령줄에서 스크립트를 실행합니다.
node get-dimensions.js
평가 및 관련 메서드(예: evaluateOnNewDocument
, exposeFunction
)에 관한 자세한 내용은 JavaScript 평가를 참고하세요.
기본 런타임 설정
헤드리스 모드 사용
Puppeteer는 Chromium을 헤드리스 모드로 실행합니다. Chromium 정식 버전을 실행하려면 브라우저를 실행할 때 headless
옵션을 설정합니다.
const browser = await puppeteer.launch({ headless: false }); // default is true
Chromium 번들 버전을 실행합니다.
기본적으로 Puppeteer는 특정 버전의 Chromium을 다운로드하고 사용하므로 즉시 API가 작동합니다. 다른 버전의 Chrome 또는 Chromium과 함께 Puppeteer를 사용하려면 Browser
인스턴스를 만들 때 실행 파일의 경로를 전달합니다.
const browser = await puppeteer.launch({ executablePath: '/path/to/Chrome' });
Puppeteer를 Firefox Nightly와 함께 사용할 수도 있습니다 (실험적 지원).
자세한 내용은 Puppeteer.launch()
를 참조하세요.
추가 정보:
- Chromium과 Chrome의 차이점: How-To Geek
- Chromium 문서에는 Linux 사용자의 몇 가지 차이점이 설명되어 있습니다.
새 사용자 프로필 생성
Puppeteer는 자체 브라우저 사용자 프로필을 만들어 실행할 때마다 정리합니다.
다음 단계
- 헤드리스 Chrome에 관해 자세히 알아보세요.
- 예를 살펴보세요.