반응형
Puppeteer를 사용하여 테스트하는 방법
Puppeteer는 Node.js 라이브러리로 헤드리스 Chrome 또는 Chromium을 제어할 수 있습니다. 이를 통해 웹 페이지의 스크린샷을 찍거나 PDF로 저장하거나 웹 애플리케이션을 테스트할 수 있습니다.
nodejs 설치
sudo apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 \
libfontconfig1 libgbm1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 \
libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 \
libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 \
libnss3 lsb-release xdg-utils wget libgbm-dev libxshmfence-dev
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
apt-get install -y nodejs
$ node --version
v18.20.3
Puppeteer 설치
Puppeteer를 프로젝트에 설치합니다. Node.js가 설치되어 있어야 합니다.
npm install puppeteer
sudo npm install --location=global --unsafe-perm puppeteer
Puppeteer를 사용하여 간단한 테스트로 구글 페이지에 접속하여 스크린샷을 찍는 예제
1. 프로젝트 디렉토리 생성 및 초기화
mkdir puppeteer-test
cd puppeteer-test
npm init -y
npm install puppeteer
2. 스크립트 작성
vim google-screenshot.js
// google-screenshot.js
const puppeteer = require('puppeteer');
(async () => {
// 브라우저를 실행합니다.
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox'],
});
// 새 페이지를 엽니다.
const page = await browser.newPage();
// 페이지에 접속합니다.
await page.goto('https://www.google.com');
// 스크린샷을 찍습니다.
await page.screenshot({ path: '/usr/share/nginx/html/google.png' });
// 브라우저를 종료합니다.
await browser.close();
})();
sudo mkdir -p /usr/share/nginx/html
3. 스크립트 실행
node google-screenshot.js
이렇게 하면 현재 디렉토리에 google.png라는 이름의 스크린샷 파일이 생성됩니다.
4. google.png 파일 확인
$ ls -l /usr/share/nginx/html/google.png
-rw-r--r-- 1 root root 26806 Jun 13 14:56 /usr/share/nginx/html/google.png
5. 브라우저에서 google.png 확인
http://localhost/google.png
728x90
웹 페이지를 PDF로 저장하는 Node.js 예제
1. generate_pdf.js 작성
vim generate_pdf.js
const puppeteer = require('puppeteer');
(async () => {
try {
// 브라우저 시작 (no-sandbox 옵션 추가)
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
const page = await browser.newPage();
// PDF로 변환할 웹 페이지로 이동
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
// PDF 생성
await page.pdf({
path: 'example.pdf', // 저장할 파일 경로
format: 'A4', // PDF 포맷 (A4, Letter 등)
printBackground: true, // 배경 그래픽 포함
});
console.log('PDF 생성 완료: example.pdf');
// 브라우저 종료
await browser.close();
} catch (error) {
console.error('PDF 생성 중 오류 발생:', error);
}
})();
2. generate_pdf.js 실행
node generate_pdf.js
$ node generate_pdf.js
PDF 생성 완료: example.pdf
3. 브라우저에서 example.pdf 확인
https://example.com 페이지를 PDF로 변환하여 example.pdf 파일로 저장합니다. 스크립트를 실행하면 PDF가 성공적으로 생성되었는지 확인할 수 있습니다.
참고URL
- Google : Puppeteer Installation
- SPATIE.BE : PUPPETEER Requirements
728x90
반응형
'리눅스' 카테고리의 다른 글
우분투에서 node.js 애플리케이션을 pm2를 사용하여 실행하는 방법 (0) | 2024.06.20 |
---|---|
git clone 특정 디렉토리만 선택적으로 복제하는 방법 (0) | 2024.06.19 |
우분투에 Nginx와 PHP 8.3을 소스에서 컴파일하여 설치하는 방법 (0) | 2024.06.13 |
우분투에 PHP 8.3을 설치하거나 기존 PHP를 PHP 8.3으로 업그레이드하는 방법 (0) | 2024.06.12 |
우분투에서 APT 패키지 관리자를 통해 프록시를 설정하는 방법 (0) | 2024.05.30 |