WebDriver BiDi を Firefox、Chrome、Puppeteer で本番環境に対応

Matthias Rohmer
Matthias Rohmer

つい先週、Google は BrowserStack と共同で、WebDriver BiDi が BrowserStack で本番環境に対応しています。 今週の WebDriver BiDi の夏は Firefox 129 と Puppeteer 23 は、それぞれ WebDriver BiDi の実稼働対応をサポートしています。

Mozilla は 4 年以上にわたり WebDriver BiDi の強力なコラボレーターとして活動 現在は新しい標準の策定を支援し、その後段階的に Firefox WebDriver ニュースレターに進捗状況をわかりやすく記載しています。

WebDriver BiDi が Firefox と Puppeteer のバージョン 23 から本番環境に対応しました。 は、WebDriver BiDi を通じて Firefox の安定したサポートを提供します。これにより Chrome と同じ簡潔な API を備えた Firefox です。Chrome に対する Puppeteer のサポート DevTools プロトコル(CDP)に変更はありません。

Firefox、CDP、Puppeteer

Puppeteer は、デベロッパーが Chrome を使用して Chromium ベースのブラウザを自動化できる信頼性の高いツールです。 DevTools プロトコル(CDP とも呼ばれます)。2019 年には Puppeteer は Firefox の場合:

この作業を行うため、Mozilla は CDP のサブセットを実装して維持し、 Firefox。このソリューションでは Firefox を Puppeteer API で自動化できますが いくつかの注意点があります。

  • 名前が示すように、CDP は Chrome の DevTools で使用され、変更する必要があります。 実装する方法を学びました
  • CDP は共通の公開されている仕様で標準化されておらず、Firefox で維持するには安定したコミュニケーションと 手間がかかります。
  • Firefox は CDP のサブセットのみを実装していたため、Puppeteer は 完全な API が Firefox でも動作することを保証し、ユーザーの混乱を招く。

Google は Mozilla のサポートにより、 それが恒久的な解決策ではないことを常にわかっていました。これを基に構築 他の主要なブラウザおよびツール ベンダーを含む、 共同で開発したのが WebDriver BiDi です

チームワークで夢を実現

Firefox チームは、Firefox に WebDriver BiDi を実装するための取り組みを進めています。 同時に、Puppeteer チームは、WebDriver BiDi のサポートも拡大しています。 確認しました両チームが目指した目標は、 すべての API を本番環境自動化ユースケースに必須に Puppeteer で WebDriver BiDi を使用して利用可能になり、Chrome と Firefox。

過去数か月間の合格したテストの数を示す共有チーム ダッシュボード。 <ph type="x-smartling-placeholder">
</ph> 過去数か月間の合格したテストの数を示す共有チーム ダッシュボード。

これにより、Puppeteer のユーザーは、自動化に Firefox または Chrome を選択できます。 Puppeteer の起動時に browser 構成キーを指定する 構成されます

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

Firefox 129 の新機能と WebDriver に関する Mozilla の取り組みについて BiDi については、関連する Mozilla Hacks のブログ投稿をご覧ください。

今後の CDP サポート

上記のコード スニペットは、以下を使用して Chrome を自動化することを Puppeteer で WebDriver BiDi を使用するには、protocol を明示的に以下に設定する必要があります webDriverBiDi。Chrome の場合、Puppeteer はデフォルトで CDP - 既存の自動化を阻害せず、自動化を引き続きサポート Chrome の機能に特化しています

Firefox での CDP のサポートは Firefox 129 で終了し、 2024 年末に削除される予定です。 Firefox で CDP のサポートに依存する既存の自動化がある場合は、 WebDriver BiDi への移行を推奨。それが難しい場合は、 dev-webdriver@mozilla.org を、使用するユースケースに合わせて登録できます。