iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 4
0
DevOps

Puppeteer系列 第 4

Puppeteer & 加快E2E測試與爬蟲速度

介紹

在寫 爬蟲 或是 e2e 測試的時候,通常都會發 Request, 這時候通常也會連帶圖片都會爬回來佔掉許多資源,這時候Puppeteer提供了 一個可以判斷 網路資源的功能可以來過濾掉不需要的 resourceType 部分而達到加快速度的功能


'use strict';

const puppeteer = require('puppeteer');

(async() => {

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', request => {
  if (request.resourceType() === 'image')
    request.abort();
  else
    request.continue();
});
await page.goto('https://news.google.com/news/');
await page.screenshot({path: 'news.png', fullPage: true});

await browser.close();

})();

在以上範例可以看到 ,先把這個 page.setRequestInterception 設定為 true,要對Request操作時候用, 以下會用到 abort request行為,所以要先設定為 true ,可以參考更多的設定
https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-request

判斷 request 的時候 的資源檔屬於image的就直接 abort 反之就繼續

page.on('request', request => {
  if (request.resourceType() === 'image')
    request.abort();
  else
    request.continue();
});

總結

這個功能對於E2E或是爬蟲開發者而言是一大福音因為可以加速開發流程與測試時間,而且語法簡單明暸


上一篇
Puppeteer & Launch 初始化
下一篇
Puppeteer & 前後端共用 function
系列文
Puppeteer30

1 則留言

0
ddixw66
iT邦新手 5 級 ‧ 2017-12-22 14:25:55

前些日子也有用過 puppeteer 做爬蟲
puppeteer 就比較無法做個類型瀏覽器的測試了,比較可惜

polo iT邦新手 4 級 ‧ 2017-12-22 15:49:03 檢舉

嗯啊 只能用自家的~不然API文件各方面都不錯,用起來也簡單

我要留言

立即登入留言