LoginSignup
1
0

More than 3 years have passed since last update.

PuppeteerのBrowserFetcherクラス

Last updated at Posted at 2020-05-27

今回は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メソッド

maclinuxwin32、または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クラスをやっていきたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0