よくある質問
質問:誰がPuppeteerをメンテナンスしていますか?
Chromeブラウザオートメーションチームがこのライブラリをメンテナンスしていますが、プロジェクトへの皆様のご協力と専門知識を歓迎します!貢献ガイドをご覧ください。
質問:クロスブラウザサポートの状況はどうですか?
Firefoxの公式サポートは現在試験段階です。Mozillaとの ongoing の協力は、開発者がクロスブラウザカバレッジを期待する、一般的なエンドツーエンドテストのユースケースをサポートすることを目指しています。Puppeteerチームは、Firefoxのサポートを安定させ、不足しているAPIに注意を向けるために、ユーザーからの意見を必要としています。
Puppeteer v2.1.0以降、puppeteer.launch({product: 'firefox'})
を指定することで、追加のカスタムパッチなしでFirefox NightlyでPuppeteerスクリプトを実行できます。以前の実験ではパッチを適用したバージョンのFirefoxが必要でしたが、現在の方法は「標準の」Firefoxで動作します。
私たちは、SafariなどのブラウザにPuppeteerのサポートを提供するために、他のブラウザベンダーと協力していきます。この取り組みには、(Chromeで使用されている非標準のDevToolsプロトコルに依存するのではなく)クロスブラウザコマンドを実行するための標準を探ることが含まれます。
2023年11月17日更新:Puppeteerは、Firefoxを自動化するために使用できる新しいWebDriverBiDiプロトコルを試験的にサポートしています。FirefoxのWebDriver BiDi実装は、将来的にFirefoxの現在のCDP実装を置き換える予定です。詳細はhttps://puppeteer.dokyumento.jp/webdriver-bidiをご覧ください。
質問:PuppeteerはWebDriver BiDiをサポートしていますか?
PuppeteerはWebDriver BiDiを試験的にサポートしています。https://puppeteer.dokyumento.jp/webdriver-bidiをご覧ください。
質問:Puppeteerの目標と原則は何ですか?
プロジェクトの目標は次のとおりです。
- Chrome DevToolsとWebDriver BiDiプロトコルの機能を強調するリファレンス実装を提供する。
- 自動クロスブラウザテストの採用を拡大する。
- 新しいDevToolsプロトコルとWebDriver BiDi機能のドッグフーディングを支援する...そしてバグを発見する!
- ブラウザテストの自動化における課題について学び、それらのギャップを埋めるのに役立つ。
私たちは、製品の意思決定を推進するためにChromiumの原則を採用しています。
- 速度:Puppeteerは、自動化されたページに比べてパフォーマンスのオーバーヘッドがほとんどありません。
- セキュリティ:Puppeteerはブラウザとは別のプロセスで動作するため、潜在的に悪意のあるページを安全に自動化できます。
- 安定性:Puppeteerは不安定であってはならず、メモリリークを起こしてはなりません。
- シンプルさ:Puppeteerは、使いやすく、理解しやすく、デバッグしやすい高レベルAPIを提供します。
質問:PuppeteerはSelenium WebDriverの代替品ですか?
いいえ。両方のプロジェクトは、非常に異なる理由で valuable です。
- Selenium WebDriverはクロスブラウザの自動化に焦点を当て、複数の言語のバインディングを提供しています。PuppeteerはJavaScript専用です。
- PuppeteerはChromiumに焦点を当てています。その価値提案は、Chromiumベースのブラウザ向けのより豊富な機能です。
とはいえ、コミュニティ主導のjest-puppeteerやPuppeteerのAngular統合などを使用して、PuppeteerでChromiumに対してテストを実行することはできます。これはおそらく唯一のテストソリューションではないはずですが、WebDriver classic と比較していくつかの優れた点があります。
- Puppeteerはセットアップが不要で、最適に動作するChromeバージョンがバンドルされているため、非常に簡単に開始できます。
- Puppeteerはイベント駆動アーキテクチャを備えているため、潜在的な不安定さを大幅に解消します。puppeteerスクリプトでは「sleep(1000)」コールは必要ありません。
- Puppeteerはブラウザコンテキストを公開しているため、テスト実行を効率的に並列化できます。
- Puppeteerはデバッグに優れています。「headless」ビットをfalseに反転し、「slowMo」を追加すると、ブラウザの動作を確認できます。Chrome DevToolsを開いてテスト環境を検査することもできます。
質問:Puppeteer v.XXXはChromium v.YYYで動作しないのはなぜですか?
私たちはPuppeteerをChromiumと不可分のエンティティと見なしています。Puppeteerの各バージョンには、特定のバージョンのChromiumがバンドルされています。これは、動作が保証されている唯一のバージョンです。
これは人為的な制約ではありません。Puppeteerの多くの作業は、実際にはChromiumリポジトリで行われています。典型的なストーリーをご紹介します。
- Puppeteerのバグが報告されました:https://github.com/puppeteer/puppeteer/issues/2709
- これはDevToolsプロトコルの問題であることが判明したため、Chromiumで修正しています:https://chromium-review.googlesource.com/c/chromium/src/+/1102154
- アップストリームの修正が完了したら、更新されたChromiumをPuppeteerにロールします:https://github.com/puppeteer/puppeteer/pull/2769
質問:PuppeteerはどのChromeバージョンを使用していますか?
revisions.tsのchrome
エントリを探してください。
質問:PuppeteerはどのFirefoxバージョンを使用していますか?
Firefoxのサポートは試験段階であるため、PUPPETEER_PRODUCT
環境変数がfirefox
に設定されている場合、Puppeteerは最新のFirefox Nightlyをダウンロードします。そのため、revisions.tsのfirefox
の値はlatest
になっています。Puppeteerは特定のFirefoxバージョンに関連付けられていません。
Puppeteerのインストールの一部としてFirefox Nightlyを取得するには
PUPPETEER_PRODUCT=firefox npm i puppeteer
既存のPuppeteerプロジェクトにFirefox Nightlyをダウンロードするには
npx puppeteer browsers install firefox
質問:「ナビゲーション」とは何ですか?
Puppeteerの観点からは、「ナビゲーション」とは、ページのURLを変更するあらゆるものです。ブラウザがネットワークにアクセスしてWebサーバーから新しいドキュメントを取得する通常のナビゲーションに加えて、これにはアンカーナビゲーションとHistory APIの使用が含まれます。
この「ナビゲーション」の定義により、Puppeteerはシングルページアプリケーションとシームレスに連携します。
質問:「信頼できる」入力イベントと「信頼できない」入力イベントの違いは何ですか?
ブラウザでは、入力イベントは大きく2つのグループに分けられます:信頼できるイベントと信頼できないイベント。
- 信頼できるイベント:ユーザーがマウスやキーボードを使用してページを操作することによって生成されるイベント。
- 信頼できないイベント:Web APIによって生成されるイベント。例:
document.createEvent
またはelement.click()
メソッド。
Webサイトは、これら2つのグループを区別できます。
Event.isTrusted
イベントフラグを使用する- 付随するイベントをスニッフィングする。たとえば、信頼できるすべての
'click'
イベントの前に、'mousedown'
イベントと'mouseup'
イベントが発生します。
自動化の目的では、信頼できるイベントを生成することが重要です。Puppeteerで生成されるすべての入力イベントは信頼でき、適切な付随イベントを発生させます。何らかの理由で信頼できないイベントが必要な場合は、page.evaluate
を使用してページコンテキストに移動し、偽のイベントを生成することができます。
await page.evaluate(() => {
document.querySelector('button[type=submit]').click();
});
質問:Puppeteerはメディアとオーディオの再生をサポートしていますか?
PuppeteerはデフォルトでChrome for Testingバイナリを使用しており、M120以降、独自のコーデックがサポートされています。
質問:テスト環境でPuppeteerのインストール/実行に問題があります。どこで助けを求めるべきですか?
さまざまなオペレーティングシステムに必要な依存関係をリストしたトラブルシューティングガイドがあります。
質問:もっと質問があります!どこで質問すればいいですか?
Puppeteerに関するヘルプを得るには、多くの方法があります。
- 質問:Stack Overflow
- バグレポートについてはこちら: GitHub Issues
質問を投稿する前に、これらのチャンネルを検索してください。