今回はPuppeteerのBrowserFetcherクラスについて書いていきたいと思います。
BrowserFetcherクラス
BrowserFetcherはChromiumとFirefoxの異なるバージョンをダウンロードして、管理することができます。
BrowserFetcherはChromiumのバージョンを("533271"にたいな)指定するrevision string上で操作します。revision stringはomahaproxy.appspot.comから得ることができます。と、言いたいところなのですが、確認したところ、存在しないものが多いので、こちらの方を見てください。
Firefoxの場合、BrowserFetcherはFirefox Nightlyをダウンロードして、("75"にたいな)バージョン番号を操作します。Firefox Nightlyのホストはこちらを見てください。
canDownloadメソッド
revisionが利用可能かどうかを確かめるメソッド。
ホストからダウンロード可能であれば、true
を返してくれます。
例(createBrowserFetcherの設定によって結果が変わります):
const puppeteer = require('puppeteer');
async function checkRevision(revision) {
const browserFetcher = puppeteer.createBrowserFetcher();
const isAvailable = await browserFetcher.canDownload(revision);
if(isAvailable) {
console.info('This revision is available.');
} else {
console.info('This revision isn\'t available.');
}
}
checkRevision('756066'); // win64
checkRevision('1000583'); // This may release from now on but this isn't release at the moment.
checkRevision('78.0a1'); // If this product is Firefox, this result is true.
結果:
This revision is available.
This revision isn't available.
This revision isn't available.
downloadメソッド
ChromiumもしくはFirefox Nightlyをダウンロードするメソッド。
browserFetcher.download(revision[, progressCallback])
revision string ダウンロードするためのrevision
progressCallback function(number, number)
downloadedBytes number ダウンロードされたバイト数。
totalBytes number 合計ダウンロードバイト数。
簡単な例:
const puppeteer = require('puppeteer');
(async () => {
const browserFetcher = puppeteer.createBrowserFetcher();
await browserFetcher.download('771731', (downloadedBytes, totalBytes) => {
// any code...
});
})();
hostメソッド
使用されているダウンロードホストを返すメソッドです。
localRevisionsメソッド
ディスク上でローカルに利用可能な(現在のproduct
の)すべてのrevisionのリストを返すメソッド。
platformメソッド
mac
、linux
、win32
、またはwin64
のいずれかを返すメソッド。
productメソッド
chrome
もしくはfirefox
のいずれかを返すメソッド。
removeメソッド
ダウンロードされたChromiumもしくはfiredfoxをrevisionを指定して削除するメソッド。
revisionInfoメソッド
revisionを指定してそのrevisionの情報を出すメソッド。
サンプル
ローカルにはrevision:389298と771731がダウンロード済み。
const puppeteer = require('puppeteer');
(async () => {
const browserFetcher = puppeteer.createBrowserFetcher();
console.info('host: ' + await browserFetcher.host());
await (browserFetcher.localRevisions()).then(revisions => console.info(revisions));
console.info('platform: ' + await browserFetcher.platform());
console.info('product: ' + await browserFetcher.product());
const info1 = await browserFetcher.revisionInfo('389298');
const info2 = await browserFetcher.revisionInfo('771731');
const info3 = await browserFetcher.revisionInfo('385798');
console.info(info1);
console.info(info2);
console.info(info3);
})();
結果:
[ '389298', '771731' ]
platform: win64
product: chrome
{ revision: '389298',
executablePath:
'path\\node_modules\\puppeteer\\.local-chromium\\win64-389298\\chrome-win32\\chrome.exe',
folderPath:
'path\\node_modules\\puppeteer\\.local-chromium\\win64-389298',
local: true,
url:
'https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/389298/chrome-win32.zip',
product: 'chrome' }
{ revision: '771731',
executablePath:
'path\\node_modules\\puppeteer\\.local-chromium\\win64-771731\\chrome-win\\chrome.exe',
folderPath:
'pathp\\node_modules\\puppeteer\\.local-chromium\\win64-771731',
local: true,
url:
'https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/771731/chrome-win.zip',
product: 'chrome' }
{ revision: '385798',
executablePath:
'path\\node_modules\\puppeteer\\.local-chromium\\win64-385798\\chrome-win32\\chrome.exe',
folderPath:
'path\\node_modules\\puppeteer\\.local-chromium\\win64-385798',
local: false,
url:
'https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/385798/chrome-win32.zip',
product: 'chrome' }
さいごに
次はBrowserクラスをやっていきたいと思います。