メインコンテンツへスキップ
バージョン: 22.5.0

実験的なWebDriver BiDiサポート

WebDriver BiDiは、WebDriver「Classic」とCDPの双方で優れた機能を統合し、双方向の通信を可能にし高速かつ低レベルな制御が可能な、新しいクロスブラウザオートメーションプロトコルで、現在開発中です。

関連情報

ChromeとFirefoxで自動実行

PuppeteerはChromeおよびFirefoxでのWebDriver BiDi自動実行をサポートしています。

Firefox統合は、以前のCDPベースのアプローチとの機能パリティに近付いています。詳細については、専用の発表をご覧ください。

進捗の測定

WebDriver BiDiの機能を評価するために、包括的なPuppeteerテストスイートを利用しました。

  • Firefoxの場合は、現在60未満のテストがCDP実装と比較して失敗していますが、82を超える新しいテストがWebDriver BiDiを正常に使用しており、その可能性の高まりを示しています。
  • Chromeの場合、約68%のテストがWebDriver BiDiで合格しており、CDPベースのアプローチと比較して改善の余地があることを示しています。

開始

以下は、WebDriver BiDiを使用してFirefoxまたはChromeを起動する例です。

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({
product: 'firefox', // or 'chrome'
protocol: 'webDriverBiDi',
});
const page = await browser.newPage();
...
await browser.close();

ブラウザの自動化体験を統合的かつ効率的にする、わくわくするようなステップです。WebDriver BiDi と Puppeteer を試してみて、ブラウザの自動化の未来を一緒に形作っていきましょう。

WebDriver BiDi でサポートされる Puppeteer の機能

  • ブラウザとページの自動化

    • Browser.close
    • Frame.goto() (refererreferrerPolicy を除く)
    • Page.bringToFront
    • Page.goBack()
    • Page.goForward()
    • Page.goto (refererreferrerPolicy を除く)
    • Page.reload (ignoreCache パラメータを除く)
    • Page.setViewport (widthheightdeviceScaleFactor のみ)
    • Puppeteer.launch
  • スクリプトの評価:

    • JSHandle.evaluate
    • JSHandle.evaluateHandle
    • Page.evaluate
    • Page.exposeFunction
  • セレクタロケータ (ARIA を除く)

    • Page.$ (ARIA セレクタは Chrome でサポートされています)
    • Page.$$ (ARIA セレクタは Chrome でサポートされています)
    • Page.$$eval (ARIA セレクタは Chrome でサポートされています)
    • Page.$eval (ARIA セレクタは Chrome でサポートされています)
    • Page.waitForSelector (ARIA セレクタは Chrome でサポートされています)
  • 入力

    • ElementHandle.uploadFile
    • ElementHandle.click
    • Keyboard.down
    • Keyboard.press
    • Keyboard.sendCharacter
    • Keyboard.type
    • Keyboard.up
    • マウスイベント (ドラッグアンドドロップ API の専用メソッドを除く)
    • Page.tap
    • TouchScreen.*
  • JavaScript ダイアログのインターセプション

    • page.on('dialog')
    • Dialog.*
  • スクリーンショット (サポートされていないパラメータもあります)

    • Page.screenshot (サポートされているパラメータ: clipencodingfullPage)
  • PDF 生成 (サポートされていないパラメータもあります)

    • Page.pdf (formatheightlandscapemarginpageRangesprintBackgroundscalewidth のみサポートされています)
    • Page.createPDFStream (formatheightlandscapemarginpageRangesprintBackgroundscalewidth のみサポートされています)
  • パーミッション (Chrome のみでサポートされています)

    • BrowserContext.clearPermissionOverrides()
    • BrowserContext.overridePermissions()

WebDriver BiDi でまだサポートされていない Puppeteer の機能

  • リクエストのインターセプション

    • HTTPRequest.abort()
    • HTTPRequest.abortErrorReason()
    • HTTPRequest.client()
    • HTTPRequest.continue()
    • HTTPRequest.continueRequestOverrides()
    • HTTPRequest.failure()
    • HTTPRequest.finalizeInterceptions()
    • HTTPRequest.interceptResolutionState()
    • HTTPRequest.isInterceptResolutionHandled()
    • HTTPRequest.respond()
    • HTTPRequest.responseForRequest()
    • Page.setRequestInterception()
  • さまざまなエミュレーション (ほとんどは Chrome でサポートされています)

    • Page.emulate() (Chrome のみでサポートされています)
    • Page.emulateCPUThrottling() (Chrome のみでサポートされています)
    • Page.emulateIdleState() (Chrome のみでサポートされています)
    • Page.emulateMediaFeatures() (Chrome のみでサポートされています)
    • Page.emulateMediaType() (Chrome のみでサポートされています)
    • Page.emulateTimezone() (Chrome のみでサポートされています)
    • Page.emulateVisionDeficiency() (Chrome のみでサポートされています)
    • Page.setBypassCSP() (Chrome のみでサポートされています)
    • Page.setCacheEnabled() (Chrome のみでサポートされています)
    • Page.setGeolocation() (Chrome のみでサポートされています)
    • Page.setJavaScriptEnabled() (Chrome のみでサポートされています)
  • CDP 固有の機能

    • Page.createCDPSession() (Chrome のみでサポートされています)
  • トレース (Chrome のみでサポートされています)

  • カバレッジ (Chromeでのみサポート)

  • アクセシビリティ (Chromeでのみサポート)

  • その他メソッド

    • Browser.userAgent()
    • Frame.isOOPFrame()
    • Frame.waitForDevicePrompt()
    • HTTPResponse.buffer()
    • HTTPResponse.fromServiceWorker()
    • HTTPResponse.securityDetails()
    • Input.drag()
    • Input.dragAndDrop()
    • Input.dragOver()
    • Input.drop()
    • Page.authenticate()
    • Page.cookies()
    • Page.deleteCookie()
    • Page.emulateNetworkConditions()
    • Page.isDragInterceptionEnabled()
    • Page.isJavaScriptEnabled() (Chromeでのみサポート)
    • Page.isServiceWorkerBypassed()
    • Page.metrics()
    • Page.queryObjects() (Chromeでのみサポート)
    • Page.screencast() (Chromeでのみサポート)
    • Page.setBypassServiceWorker()
    • Page.setCookie()
    • Page.setDragInterception()
    • Page.setExtraHTTPHeaders()
    • Page.setOfflineMode()
    • Page.setUserAgent()
    • Page.waitForDevicePrompt()
    • Page.waitForFileChooser()
    • Page.workers()
    • PageEvent.popup
    • PageEvent.WorkerCreated
    • PageEvent.WorkerDestroyed
    • Target.opener()