ダウンロード

以前の Chrome バージョン

以前のバージョンの Chrome の場合は、次のバージョンの ChromeDriver がサポートしています。

適切なバージョンの ChromeDriver を選択する方法について詳しくは、バージョンの選択のページをご覧ください。

ChromeDriver 148

バグの修正

  • DOM アクセス: 閉じたシャドウルート内にネストされた iframe 内でボタンクリックをシミュレートしたときに発生するクラッシュを修正しました。以前にオーナー フレーム要素 ID の検索に使用されていた JavaScript では、閉じられたシャドウ ルートを突き抜けることができませんでしたが、新しい実装では f.X.d.Y.e.Z 形式を直接使用してフレームを解決します(crrev.com/c/7594919バグ: 469831357)。
  • セキュリティ: 位置引数インジェクションに関連する潜在的な脆弱性を防ぐため、Chrome 引数のサニタイズを強化しました(crrev.com/c/7695604バグ: 494464734)。
  • テスト: AddressSanitizer(ASAN)で実行している場合、commands_unittestFindElement(s)WhileNavigating テストの kImplicitWait タイムアウトを延長しました。デフォルトの 3 秒のタイムアウトでは、再試行ループが ASAN オーバーヘッドですべてのモックエラーを消費するのに十分ではなく、不安定さが発生していました(crrev.com/c/7657276)。

内部の変更とリファクタリング

  • C++ 標準: //chrome .cc ファイル全体で base/functional/callback_forward.h の不要なインクルードを置き換え、コールバックが実際に使用される場合に callback.h の使用を強制しました(crrev.com/c/7200285バグ: 40318405)。コンパイルの効率性を高めるため、logging::LoggingSettingsbase/logging.h から独自のヘッダー base/logging/logging_settings.h に移動しました(crrev.com/c/7173024crrev.com/c/7170750 の取り消し後、crrev.com/c/7160150 を再ランディング)。base/logging.h に関連するさまざまな IWYU エラーに対処しました(crrev.com/c/7730403バグ: 499476145)。
  • C++ 標準: 冗長なマップ count(key) チェックとルックアップを、より効率的な find(key) イテレータ アクセスに置き換えました(crrev.com/c/7705392crrev.com/c/7693277バグ: 452950815)。カプセル化を改善するために Thread コンストラクタを介して ThreadDelegate を挿入し、スレッドの再起動が必要なケースに対応するために ThreadRestartable オプションを追加しました(crrev.com/c/7696887バグ: 40881604)。
  • メモリの安全性: chrome/ 全体でファイル全体の #pragma allow_unsafe_buffers を粒度の細かい UNSAFE_TODO() マクロに変換しました(crrev.com/c/7132241バグ: 409340989)。IOBuffer->span().first()IOBuffer->first() に短縮しました(crrev.com/c/7159119)。
  • 依存関係: crossbench 依存関係をロールアウトし、macOS と Android でローカルにビルドされた ChromeDriver バイナリを検出するための修正を導入しました(crrev.com/c/7673978)。
  • テスト: 基盤となるビルドとテストのインフラストラクチャの修正(crrev.com/c/7707960)に続いて、chromedriver_py_testsmodule スキームを再度有効にしました。

ChromeDriver 147

バグの修正

  • テスト: ElementClick が、オーバーレイ要素を含むクロスオリジン iframe でのクリックを正しく処理することを確認する隔離環境回帰テストを追加しました。特にサイト分離シナリオでテストします。これにより、クリックが誤って表示されているオーバーレイではなく埋め込みコンテンツにルーティングされることがなくなります(crrev.com/c/7261984バグ: 42321834バグ: 42322220)。

内部の変更とリファクタリング

  • C++ 標準: Google C++ スタイルガイドに準拠するように URL デコードモードと関数を改名し、DecodeURLModeDecodeUrlMode に、DecodeURLEscapeSequences()DecodeUrlEscapeSequences() に変更しました(crrev.com/c/7593238)。コードベース全体で URL デコードの使用を簡素化するために url::UrlEscapeDecoder を導入しました(crrev.com/c/7610180)。//chrome ファイルから余分な build/branding_buildflags.h インクルードを削除しました(crrev.com/c/7595125バグ: 40318405)。ChromeDriver 内を除き、//chrome から BUILDFLAG(IS_FUCHSIA) ロジックを削除しました(crrev.com/c/5485913バグ: 41481724)。
  • メモリの安全性(spanification): ChromeDriver ユーティリティの UNSAFE_TODO マーカーを解決し、安全なスパンベースの実装に移行しました(crrev.com/c/7562602バグ: 435317390)。

ChromeDriver 146

バグの修正

  • 安定性: ウィンドウが同時に閉じられた場合(ナビゲーションの完了を待機中など)にコマンドの処理中に発生する可能性のある ChromeDriver のクラッシュを修正しました。この修正では、WebView オブジェクトのロックを取得して、早期に破棄されないようにします(crrev.com/c/7257074バグ: 468228355)。
  • セキュリティ: ChromeDriver HTTP サーバーへの WebSocket 接続の着信に対して Origin ヘッダー チェックを追加し、クロスオリジン ハイジャックの可能性を防止しました(crrev.com/c/7538400バグ: 478783560)。
  • テスト: testWebviewDetactedDuringClick を不安定なフィルタに移動し、ヘッドレス モードだけでなくすべての実行でスキップするようにしました(crrev.com/c/7545378バグ: 481485821)。

内部の変更とリファクタリング

ChromeDriver 145

新機能

  • テスト: inputtextareacontenteditable 要素を対象とする、さまざまな長さ(53 文字、101 文字、501 文字など)の決定論的文字列テストを受け入れるように run_py_tests.py テスト フレームワークを更新しました。これにより、長い send_keys オペレーション中に文字がドロップされないように回帰テストの範囲が提供されます(crrev.com/c/7221410バグ: 428116078)。
  • テスト: HTML <selectlist> 要素の特定のテストを追加しました(crrev.com/c/7420729バグ: 342889200)。

バグの修正

  • スクリーンショット: WebDriver 仕様ではスケーリングが規定されておらず、他のスクリーンショット機能と一貫性がなかったため、要素のスクリーンショットのスケーリングを元に戻しました(crrev.com/c/7409603バグ: 42323022)。
  • テスト: DevTools フロントエンドで導入された(crrev.com/c/7408699バグ: 474179501)、最近の正しい値(プラットフォーム、platformVersion、モデル、モバイル フィールド)と一致するように ChromeDriver テストの期待値を更新することで、testClientHintsDeviceNameIPhoneXtestClientHintsDeviceNameIPad の失敗を修正しました。

内部の変更とリファクタリング

  • C++ 標準: //chrome 全体で base::Contains() のさまざまな使用法を std::ranges::contains() に移行しました(crrev.com/c/7411011バグ: 470391351)。これには、必要なフォーマットの修正(crrev.com/c/7247217)も含まれます。substr() を使用する際の不要な文字列割り当てを回避するため、文字列パラメータを std::string_view にリファクタリングしました(crrev.com/c/7350716)。//chrome ヘッダーから余分な <map> インクルードを削除しました(crrev.com/c/7225838バグ: 40318405)。一部のファイルでインクルードの順序を修正しました(crrev.com/c/7366868)。SimpleURLLoader の使用における以前の BodyAsStringCallbackDeprecated コールバックを、std::unique_ptr ではなく std::optional を利用する BodyAsStringCallback に置き換えました(crrev.com/c/7210000バグ: 40258809)。
  • テスト: ビュー階層に追加されていない保留中の情報バーを処理する際に ChromeDriver ブラウザテストでクラッシュが発生しないようにする修正を含め、InfobarPrioritization フィールド トライアル構成を再リリースしました(crrev.com/c/7223590バグ: 447176374)。無関係なテストの失敗により以前に元に戻された Glic 機能の国とロケールのフィルタリングを再実装しました(crrev.com/c/7245749、元に戻した crrev.com/c/7233767 の後で crrev.com/c/7148759 を再実装、バグ: 454431875)。

ChromeDriver 144

新機能

  • 権限: SetPermission コマンドを更新し、最上位のオリジンに加えて現在のフレームの URL(埋め込みオリジン)を使用して、最新の W3C 仕様に準拠するようにしました。これにより、埋め込みコンテキストに依存する storage-access などの権限が正しく構成されます(crrev.com/c/7106801crrev.com/c/7104484 の取り消し後に crrev.com/c/7093216 を再上陸、バグ: 384959114)。
  • テスト: 構造化テスト ID(crrev.com/c/7124354バグ: 456432041)を使用する際に flakiness endorser をサポートするため、ChromeDriver テスト アップロード ペイロードに testMetadata(テスト名を含む)を追加しました。

バグの修正

  • ターゲットのライフサイクル: 子フレームがコマンド レスポンスを待機している間に親フレームが切り離されると ChromeDriver が停止するバグを修正しました。ChromeDriver が、コマンド処理中に親 WebViewImpl がロックされ、切り離し済みとマークされたときに、子孫フレームを明示的に推移的に切り離すようになりました(crrev.com/c/7080912バグ: 438436830)。
  • ウィンドウ管理: ChromeDriver セッション専用に、隠れたウィンドウのバックグラウンド処理を無効にしました。これにより、ブラウザがウィンドウを誤って遮蔽されたと判断してスロットリングした場合にテストが失敗する可能性がある WebDriver BiDi の問題が解決されます(crrev.com/c/7128058バグ: 458027819)。

内部の変更とリファクタリング

  • C++ 標準: //chrome .cc ファイル全体で base/functional/callback_forward.h の不要なインクルードを削除し、コールバックが実際に使用される場合に callback.h の使用を強制しました(crrev.com/c/7200285バグ: 40318405)。コンパイルの効率性を高めるため、logging::LoggingSettingsbase/logging.h から独自のヘッダー base/logging/logging_settings.h に移動しました(crrev.com/c/7173024crrev.com/c/7170750 の取り消し後、crrev.com/c/7160150 を再ランディング)。base::HexEncode の使用を新しい base::HexEncodeLower に移行しました(crrev.com/c/7103100バグ: 456472080)。
  • メモリの安全性(スパン化): PipeBuilderPipeConnection の単体テストで WriteToPipeWriteToPipeNoBestEffort を移行して base::span を受け入れ、安全でないバッファの使用を修正しました(crrev.com/c/7090293バグ: 455758227)。chrome/ 全体でファイル全体の #pragma allow_unsafe_buffers を粒度の細かい UNSAFE_TODO() マクロに変換しました(crrev.com/c/7132241バグ: 409340989)。IOBuffer->span().first()IOBuffer->first() に短縮しました(crrev.com/c/7159119)。

ChromeDriver 143

バグの修正

  • 安定性: OverrideNetworkConditions 内の解放後の使用(UAF)クラッシュを修正しました。後続のアプリケーション用に保存された未加工のポインタが、連続する呼び出しの間に解放されていましたが、適切に管理されるようになりました(crrev.com/c/7047422バグ: 42323833)。
  • テスト: WaitForCondition API を利用してより信頼性の高い同期を実現することで、不安定な Android ChromeDriver タッチテストを修正しました(crrev.com/c/6978928バグ: 42321861)。
  • DSE Prewarm: --disable-features=Prewarm スイッチを介して ChromeDriver の Prewarm 機能をデフォルトで無効化し、プリウォームされたページがテスト実行とターゲット検出を妨害しないようにしました(crrev.com/c/7007072バグ: 431928370)。

内部の変更とリファクタリング

  • C++ 標準: スマート ポインタのみが使用される //chrome ヘッダーで ref_counted.hscoped_refptr.h に置き換え、コンパイル効率を改善しました(crrev.com/c/7080753バグ: 40245294)。GURL アクセサを Get* バリアント(spec() ではなく GetSpec() など)に移行し、文字列の割り当てを明確に示して、パフォーマンスの低下を招く可能性のあるミスを防止しました(crrev.com/c/7002119バグ: 448174617)。
  • テスト: ADD_FAILURE() を使用して devtools_client_impl_unittest.cc の冗長なチェックパターンを削除しました(crrev.com/c/6998270)。crbug.com/413382905 の回帰テストを追加しました(crrev.com/c/6879417)。

ChromeDriver 142

新機能

  • 診断: TERMINATION_STATUS_EVICTED_FOR_MEMORY ステータスを追加し、ブラウザによって(メモリを節約するために)事前に終了されたプロセスと、メモリ不足(OOM)エラーによってクラッシュしたプロセスを区別できるようにしました。現在、これは OOM クラッシュ(悲しいタブの表示)とまったく同じように動作しますが、将来の個別の処理(crrev.com/c/6991933バグ: 394092280)の基盤となります。
  • 診断: WebDriver レスポンスに goog:processID 機能を追加しました。これにより、デスクトップ ブラウザのメイン プロセス ID が返されます。これにより、ChromeDriver が Firefox の moz:processID と整合し、プラットフォーム アクセシビリティ API のテストを支援します(crrev.com/c/5825307バグ: 438884256)。
  • テスト: ChromeDriver の Python 統合テストの ResultSink に構造化されたテスト ID のアップロードのサポートを追加しました(crrev.com/c/6916708バグ: 418015486)。

バグの修正

  • 診断: 通常の Chrome の終了時に ChromeDriver の動作を変更し、user-data-dir の使用に関連する紛らわしい一般的なエラー メッセージが表示されないようにしました。インスタンスが終了したことが明示的に示され、Chrome によってスローされた特定のエラーの詳細ログにユーザーが誘導されるようになりました(crrev.com/c/6977507バグ: 42323434)。
  • 初期化: Selenium WebDriver v4.16.0 の変更(crrev.com/c/6630600)との互換性を維持するため、ChromeDriver の初期化構造を更新しました。
  • Android: パッケージ管理システムで --user cur フラグがサポートされていない以前の Android バージョン(Android 11 より前)で CheckAppInstalled を修正しました(crrev.com/c/6785949バグ: 433885051)。
  • テスト: ChromeDriver で IgnoreDuplicateNavs がデフォルトのケーパビリティ スイッチを誤ってオーバーライドするバグを修正しました。ChromeDriver セッションでこの機能が無効になり、Switches::SetFromSwitches ロジックが修正されました(crrev.com/c/6949166バグ: 445332809)。

内部の変更とリファクタリング

  • C++ 標準: 複数の非推奨の base::JSONWriter::Write() 呼び出しを base::WriteJson() に置き換え、戻り値がチェックされていない場合に失敗時に空の文字列を返す動作を維持しました(crrev.com/c/6969134crrev.com/c/6929101バグ: 443929217)。base::JSONReader::Readbase::JSONReader::ReadAndReturnValueWithError で、準拠していない JSON 解析オプション(コメントを許可するなど)を明示的にオプトインする必要がある(crrev.com/c/6990988crrev.com/c/6980533バグ: 446188265)。手動によるスパン化の取り組みに続いて、ファイル全体の #pragma allow_unsafe_buffers プラグマを削除しました(crrev.com/c/6778035バグ: 409340989)。リークのある LazyInstance マクロの使用をクリーンアップしました(crrev.com/c/6781377バグ: 432815283)。IWYU 経由で http_response_headers.h の欠落しているヘッダーを含めました(crrev.com/c/6894196バグ: 40216326)。
  • メモリの安全性(スパン化): Linux ビルドの chrome/ ディレクトリ全体で多数のポインタを自動的にスパン化し、サイズ パラメータが冗長と判断された場所に非致命的な CHECK を追加しました(crrev.com/c/6734592バグ: 431824299)。
  • テスト: macOS で testDoesntCrashOnClosingBrowserFromAsyncScript を一時的に無効化しました(crrev.com/c/6995358バグ: 446461733)。「Certificates」を含むテストメソッド名のタイプミスを修正しました(crrev.com/c/6950683)。//chrome/test GN ファイルを自動フォーマット(crrev.com/c/6789277バグ: 40760278)。
  • FedCM: IdentityDialogControllerShouldShowAccountsPassiveDialog 関数を導入し、アカウント ダイアログを表示するかどうかを同期的に確認できるようにしました。これにより、非同期チェックと DevTools 計測に関連するクラッシュが修正されました(crrev.com/c/6780413バグ: 425801332)。
  • DSE プリウォーム: プリウォームを手動で有効または無効にするための短期的な解決策として、DevTools プロトコルに Page.setPrewarmingAllowed を追加し、関連するテストを修正して、メインページと正しくやり取りできるようにしました(crrev.com/c/6847287バグ: 431928370)。不安定さを解消した後、macOS と Windows 向け fieldtrial_testing_config.jsonDSEPrewarm 機能を有効にしました(crrev.com/c/6951835バグ: 431928370バグ: 435621391)。(注: CDP コマンドとフィールド トライアルの有効化は、WebDriver ユーザーにとって予期しないターゲットを公開する破壊的変更であり、それぞれ他のダウンストリームの問題を引き起こすため、元に戻されました(crrev.com/c/6966133crrev.com/c/6966161バグ: 445883308))。
  • クリーンアップ: Android コードでサポートされていない WebLayer プロジェクトへの残りの参照を削除しました(crrev.com/c/6792520バグ: 40272607)。

ChromeDriver 141

新機能

  • テスト: run_wpt_tests.py--enable-per-test-tracing フラグのサポートを追加し、run_web_tests.py の動作と一致させました。これにより、内部の ChromeDriver バッファから JSON トレース イベントが取得され、テスト結果ディレクトリ(crrev.com/c/6820247バグ: 434017035)に保存されます。

バグの修正

  • 診断: kTabCrashed エラーを返すときに、ChromeDriver が独自の内部スタック トレースを出力しないようにしました。これにより、ユーザーの混乱を避けながら、レンダラ クラッシュのスタック トレースがログに残るようになります(crrev.com/c/6841669バグ: 395131239)。

内部の変更とリファクタリング

  • C++ 標準: chrome/ 全体で、安全でない可能性のある memset 呼び出しを標準の C++ 集約初期化(instance = {})に置き換え、コンストラクタのバイパスを回避してメモリの安全性を確保しました(crrev.com/c/6875520バグ: 435317390)。IWYU を介して //base/time/time.h の欠落していた #include ディレクティブを追加しました(crrev.com/c/6832689バグ: 40216326)。強制的に安全でないバッファ プラグマを書き直しました(crrev.com/c/6828538)。
  • テスト: crbug.com/413382905 の回帰テストを追加しました(crrev.com/c/6879417)。
  • ビューの切り替え: ChromeDriver のテストの失敗に関連する以前の投機的取り消しが誤りであることが判明したため、終了した Promise が解決される前に実行された作業を更新するビューの切り替えの修正を再適用しました(crrev.com/c/6846765、取り消し crrev.com/c/6808537 の後に crrev.com/c/6806850 を再適用)。

ChromeDriver 140

バグの修正

  • ターゲットの選択: --auto-open-devtools-for-tabs で Chrome を起動したときに、DevTools ウィンドウがメインページと競合してプライマリ ウィンドウとして選択される問題を修正しました。ChromeDriver で、プライマリ ウィンドウの決定時に devtools:// 接頭辞が付いたターゲットが明示的に除外されるようになりました(crrev.com/c/6769505バグ: 427908560)。
  • ターゲット選択: 先祖によって課せられた overflow:hidden クリッピングを無視することで、ChromeDriver が要素のビュー内中心点を誤って計算するのを防ぎました。これにより、計算が WebDriver 仕様やその他の PerformActions シナリオ(crrev.com/c/6735230バグ: 42322257)と一致します。
  • Android: パッケージ マネージャーの --user cur フラグがサポートされていない古い Android バージョン(Android 11 より前)で CheckAppInstalled 関数を修正しました(crrev.com/c/6785949バグ: 433885051)。
  • テスト: DSEPrewarm 機能が原因で chromedriver_py_tests テストスイートで発生していた不安定さを修正しました。ChromeDriver は、CDP クライアントが接続されている間、テスト中に予期しないターゲット数が生じないように、事前準備トリガーを無効にするようになりました(crrev.com/c/6764274バグ: 423465927バグ: 431928370)。
  • テスト: 回帰(crrev.com/c/6780413バグ: 425801332)を引き起こした IdentityDialogController(FedCM の一部)への ShouldShowAccountsPassiveDialog 関数の追加を元に戻しました。

内部の変更とリファクタリング

ChromeDriver 139

バグの修正

  • 初期化構造: Selenium WebDriver v4.16.0 の更新との互換性を維持するため、ChromeDriver の初期化構造を更新しました(crrev.com/c/6630600)。
  • 引数の解析: 複数の --js-flags 引数を(--enable-features の処理と同様に)結合し、最後に指定された引数のみを取得しないようにしました。これにより、複雑な V8 フラグを渡す際のユーザビリティが向上します(crrev.com/c/6612042バグ: 421941798)。

内部の変更とリファクタリング

  • メモリの安全性(スパン化): //chrome/test 全体で非推奨の base::MakeStringPiece() の使用を std::string_view に置き換えました(crrev.com/c/6628089バグ: 422940464)。base::as_string_view() が使用されている箇所に base/strings/string_view_util.h を含め、将来の名前空間の移行に備えました(crrev.com/c/6625024バグ: 423048781)。
  • C++ 標準: <vector> を明示的に含めることで、//chrome 全体で Include What You Use(IWYU)の準拠を改善(crrev.com/c/6652818)、base/notimplemented.h(未使用の base/notreached.h を削除)(crrev.com/c/6655452バグ: 41493641)、base/strings/string_util.hcrrev.com/c/6607646)、base/strings/string_number_conversions.hcrrev.com/c/6593576)、base/debug/stack_trace.h の余分なインクルードを削除(crrev.com/c/6622838)。
  • テスト: --driver-logging オプションを run_wpt_tests.py に移植し、詳細レベルが低い場合でもスクリプトで ChromeDriver とブラウザの stderr をダンプできるようにしました(crrev.com/c/6608138バグ: 421262910)。
  • テスト: 以前に無効化されていた ChromeDriver 統合テスト(スクリーンショット テスト(testTakeElementScreenshot*)(crrev.com/c/6598797バグ: 42321815)、JavaScript テストによるウィンドウのクローズ(testCloseWindowUsingJavascript*)(crrev.com/c/6598978バグ: 42321150)、headless-shell ウィンドウ サイズ テスト(crrev.com/c/6621336バグ: 42323661))を再度有効化しました。
  • テスト: run_wpt_tests.py --stable を修正し、APK を解析して Clank(Android)の現在の安定版を正しく識別して使用するようにしました。また、スクリプトを更新し、対応する ChromeDriver バージョンを Chrome for Testing(CfT)から一時ディレクトリにダウンロードして、チェックアウトを汚染しないようにしました(crrev.com/c/6635694バグ: 402548382)。
  • ビルド インフラストラクチャ: マニフェストの統合と R.java パッケージの命名が専用の属性(crrev.com/c/6625266バグ: 413331591)で処理されるようになったため、android_resources() ターゲットがマニフェストを持たないようにすることで、write_build_config.py の不要なビルド依存関係を削除しました。
  • FedCM: FedCM に関連する Finch 構成のフィーチャー トグルを修正しました(crrev.com/c/6614137バグ: 421959289)。

ChromeDriver 138

新機能

  • ディスプレイ機能の管理: ビューポート セグメントの ChromeDriver の動作を更新し、最近の CSS ワーキング グループの解決策に合わせました。折りたたみ式デバイスを平らにして使用する場合、または折りたたみ式以外のすべてのデバイスで、単一のセグメントを含む配列が常に返されるようになりました。これにより、メディアクエリの動作が一致し、フィンガープリントのリスクが軽減されます(crrev.com/c/6469455バグ: 414430842)。
  • 設定とローカル状態(Android): Android デバイスに対して ChromeDriver を実行する際に、localStateprefs の機能のサポートを追加しました。これは ADB に依存し、カスタム user-data-dir フラグが必要です。現在、デフォルトのテンプレートで状態を初期化します(crrev.com/c/6397155バグ: 406427226)。

バグの修正

  • 安定性: ユーザーが「続行」ボタンで初回起動時のダイアログ(FRE)を閉じると macOS で ChromeDriver がクラッシュする問題を修正しました。このクラッシュは、kTargetDetached エラー状態をオーバーライドして無効な WebView にアクセスしようとしたことが原因で発生しました(crrev.com/c/6538867バグ: 410599467)。
  • パフォーマンス テスト: Windows の pinpoint bot で crossbench テストランナーが、--browser=release_x64 が渡されたときに廃止された ../Release_x64 パスを使用して ChromeDriver バイナリを誤って特定しようとし、ローカルビルドを使用する代わりに古いバイナリのダウンロードにフォールバックする問題を修正しました(crrev.com/c/6502134)。

内部の変更とリファクタリング

  • メモリ安全性(スパン化): WebSocket::OnReadDuringHandshakeWebSocket::OnReadDuringOpen の未チェックのポインタを base::span に置き換え、unsafe-buffer-usage 警告に対処しました(crrev.com/c/6557346バグ: 354307328)。他の移行後に不要になった chrome/test/chromedriver 全体で不要な #pragma allow_unsafe_buffers プラグマを削除しました(crrev.com/c/6503154バグ: 414858406)。
  • C++ 標準: chrome/ ヘッダー全体で不要な #include "url/gurl.h" ディレクティブと #include <queue> ディレクティブを削除し、コンパイル時間を短縮するために適切な場所に前方宣言を追加しました(crrev.com/c/6578272crrev.com/c/6570349バグ: 40318405)。
  • API の移行: RSAPrivateKeycrypto::PrivateKey に、SHA256HashStringcrypto::Sha256 に移行し、新しいキー生成 API はエラーが発生しないため、廃止されたエラー処理ケースをクリーンアップしました(crrev.com/c/6490294バグ: 372283556)。
  • テスト: Compute Pressure API の自動化コマンド(CDP と testdriver の両方の実装)に OwnContributionEstimate 属性を追加しました(crrev.com/c/6373001バグ: 402033762)。
  • テスト: 継続的インテグレーション(CFT)ボットで ClearDisplayFeatures を検証する統合テストを修正しました。アサーションを簡素化して、ビューポート セグメントがデフォルトのビューポート サイズに戻ることを確認します(crrev.com/c/6535067バグ: 417195296)。
  • テスト: 保護されたオーディエンスの WebDriver テストのタイムアウトを増やし、低速の CI ボットでの不安定さを解消しました(crrev.com/c/6494277)。

ChromeDriver 137

新機能

  • ディスプレイ機能の管理: ディスプレイ機能をエミュレートしてクリアする ChromeDriver コマンドを追加し、Viewport Segments API(CSS と JS)の自動化要件を実装しました。これにより、デベロッパーはデュアル スクリーン デバイスまたは折りたたみ式デバイスで、折りたたみまたはヒンジのシナリオをプログラムでテストできます(crrev.com/c/6368674バグ: 40137084)。
  • BiDi: ChromeDriver を更新し、デフォルトで非表示のターゲットで BiDi Mapper を実行するようにしました。これにより、マッパーの data:, ページがテスト実行と可視性を妨げるのを防ぎます。マッパーをデバッグするには、クライアントは --debug-bidi-mapper フラグを渡して、表示可能なタブで実行できます(crrev.com/c/6441064、元に戻した後で crrev.com/c/6433672 に再ランディング、crrev.com/c/6439633バグ: 402339952)。

バグの修正

  • BiDi: 他の CDP セッションまたは BiDi セッションで作成されたターゲットを追跡できなくなった場合に、ChromeDriver が BiDi コマンド(browsingContext.close など)の処理中にブラウザ セッション全体を誤って閉じてしまう問題を修正しました。ブラウザを終了するかどうかを判断する前に、トップレベルのタブを明示的に同期するようになりました(crrev.com/c/6440293バグ: 42323838)。
  • BiDi: ChromeDriver が goog:channel 機能を空の文字列として渡された場合に削除し、欠落したチャンネルと同様に扱うことで、アップストリームの WebDriver BiDi 仕様に準拠しました(crrev.com/c/6438865バグ: 409282307)。
  • 入力: ポインタ移動コマンドで小数(浮動小数点)の x 座標と y 座標をサポートするように ChromeDriver を更新することで、タッチイベントとポインタ イベントが失敗したり、正しく動作しなかったりする問題を修正しました(crrev.com/c/6440834バグ: 409684333)。
  • ターゲット選択: PdfOopif 機能が無効になっている場合、ゲストビューで開かれた PDF のアウトオブプロセス iframe(OOPIF)がトップレベルのターゲット リストに漏洩しないようにしました。フィルタリング ロジックが拡張され、これらの chrome-extension:// 接頭辞付きターゲットが適切に除外されるようになりました(crrev.com/c/6383500バグ: 396611138)。

内部の変更とリファクタリング

  • C++ 標準: LogMessage とトレース イベントでファイル名に std::string_view を使用する変更を再適用し、以前の取り消しを引き起こした null 終端文字列の処理に関する問題を解決しました(crrev.com/c/6430129crrev.com/c/6395097 の再適用、crrev.com/c/6383699 の取り消し後の crrev.com/c/6387020 の再適用)。
  • C++ 標準: //chrome 全体で Environment::GetVar 呼び出しを最新化し、出力パラメータではなく std::optional を返す API を使用するようにしました(crrev.com/c/6417343バグ: 400758498)。
  • C++ 標準: 循環依存関係の問題を回避するため、Windows 固有のハンドル ヘルパーを win_util.h から専用の windows_handle_util.h ヘッダーにリファクタリングしました(crrev.com/c/6418805バグ: 406023316)。
  • テスト: Android 固有の Browser ドメイン ハンドラを追加し、Android ウィンドウ作成テストをサポートする Browser.getWindowForTarget API を実装しました(crrev.com/c/6427605バグ: 404932444)。
  • テスト: 拡張機能の初期化に時間がかかりすぎることで発生していた macOS テストの不安定さを修正しました(crrev.com/c/6423229バグ: 407804497)。
  • テスト: chrome-headless-shell に対して実行する際に、macOS での排他ロックと競合するため、testBrowserWithUsedUserDataDir での並列 user-data-dir 作成を一時的に無効にしました(crrev.com/c/6470455バグ: 411407649バグ: 380903149)。
  • 拡張機能: ExtensionManifestV2Unsupported フィールド トライアルが有効な場合に合格するよう、Chrome のテストを更新しました。これは基本的なステップですが、他のリポジトリの更新が保留中のため、トライアル自体は無効のままです(crrev.com/c/6415997バグ: 367395349)。(注: 構成でこのトライアルを有効にしようとした以前の試みは、crrev.com/c/6358257 を元に戻す crrev.com/c/6397497 で元に戻されました)。
  • 依存関係: catapult 依存関係を手動でロールアウトし、関連する pydeps ファイルと devil_util 参照を更新しました(crrev.com/c/6480814crrev.com/c/6466865crrev.com/c/6448910 の取り消し後に crrev.com/c/6406098 を再ランディング、バグ: 397459590)。

ChromeDriver 136

新機能

  • ブラウザのライフサイクル: Chrome 固有の機能 quitGracefully を追加しました。これにより、ChromeDriver はデフォルトの SIGKILL ではなく、Browser.close または SIGTERM を使用してブラウザを正常に停止しようとします。これにより、プロセスが終了する前に rr などのデバッガが記録をダンプする時間を確保できます(crrev.com/c/6322538、一時的な取り消し crrev.com/c/6320536 の後で crrev.com/c/6269180 を再着陸、バグ: 339644807)。
  • テスト: ブラウザ バイナリにデバッガ(rr など)とその引数を付加する一時的なラッパー スクリプトを生成して、run_wpt_tests.py --wrapper 引数を配線しました。これは、args がスイッチとして処理される場合に ChromeDriver がバイナリを直接置き換えることができない問題を回避するものです(crrev.com/c/6271108バグ: 339644807)。
  • テスト: TranslateEnabledTest の設定で翻訳を有効にし、ChromeDriver がブラウザ プロセスを管理し、--user-data-dir が暗黙的な場合に新しい --remote-debugging-port 制限をバイパスするテスト環境をサポート(crrev.com/c/6354089バグ: 327797500)。
  • DevTools: Android で別のウィンドウに新しいタブを開く DevTools のマルチインスタンス機能のサポートを追加しました(crrev.com/c/6352169バグ: 401269942バグ: 382183406)。

バグの修正

  • ターゲット選択: PdfOopif 機能が無効になっている場合に、ゲストビューで開かれた PDF のアウトオブプロセス iframe(OOPIF)がトップレベルのターゲット リストから除外されない問題を修正しました。フィルタが拡張され、chrome-extension 接頭辞が含まれるようになりました。これにより、バグが解決され、タブを作成する MV3 Chrome 拡張機能の範囲が含まれるようになりました(crrev.com/c/6383500バグ: 396611138)。
  • ターゲットの選択: パッケージ化された Chrome アプリをターゲットにすると、getWindowHandles() コマンドが connection refused ステータスで失敗する回帰を修正しました(crrev.com/c/6317161バグ: 396622746)。

内部の変更とリファクタリング

  • C++ 標準: LogMessage とトレース イベントのファイル名に std::string_view を使用する変更を再適用し、null 終端文字列を保証しない Rust ロギング構造との互換性を改善しました(crrev.com/c/6387020crrev.com/c/6383699crrev.com/c/6395097 の取り消し後に crrev.com/c/5765705 を再適用)。
  • C++ 標準: パフォーマンスを最適化するために、冗長な base::Value::Clone() 呼び出しを置き換えました(crrev.com/c/6361818)。ビルド出力をクリーンアップするため、Windows 固有のファイルで追加の -Wunsafe-buffers-in-libc-calls 警告を抑制しました(crrev.com/c/6369920バグ: 390223051)。
  • 拡張機能: 問題(crrev.com/c/6397497crrev.com/c/6358257 の取り消し、バグ: 367395349バグ: 406523920)のため、ExtensionManifestV2Unsupported フェーズの fieldtrial_testing_config.json エントリの追加を元に戻しました。
  • ドキュメント: Android 固有の ChromeDriver テストに関するドキュメントを改善しました(crrev.com/c/6354040)。

ChromeDriver 135

新機能

  • BiDi: --enable-unsafe-extension-debugging が指定されたときに ChromeDriver の権限を継承するように BiDi Mapper を更新しました。これにより、WebDriver BiDi クライアントは、通常 WebDriver クライアントが保持する権限を必要とする拡張機能を効果的にテストできます(crrev.com/c/6288627バグ: 393500934)。

バグの修正

  • テスト: 以前に不合格とマークされていた複数の WDSpec テストの期待値を再度有効にして更新しました。これにより、合格したテストの仕様準拠範囲が復元されます(crrev.com/c/6310420)。

内部の変更とリファクタリング

  • クリーンアップ: Lacros が非推奨となり、IS_CHROMEOScrrev.com/c/6284446バグ: 354842935)に標準化されたため、chrome/test/ から Lacros のすべての痕跡(IS_CHROMEOS_LACROS や関連するテストデータを含む)を削除しました。
  • クリーンアップ: devil_util に置き換えられた md5sum ユーティリティの痕跡をすべて削除し、以前のビルド依存関係をクリーンアップしました(crrev.com/c/6309939バグ: 397452007)。
  • C++ 標準: ResultCodeIsNormalResultCode() から chrome:: 名前空間を削除し、グローバル名前空間に移動しました。また、廃止された ChromeOS 起動インポート(crrev.com/c/6196899バグ: 41050580)を削除しました。
  • メモリの安全性: std::ranges::lower_bound を活用して ChromeDriver の std::lower_bound 呼び出しを簡素化しました(crrev.com/c/6223172バグ: 392116519)。将来の強制適用に備えて、最初に特定された非準拠ファイルに対する unsafe_libc_call 警告を抑制しました(crrev.com/c/6187925バグ: 390223051)。安全性を高め、コンパイル時の評価を改善するため、std::to_array の戻り値を constexpr としてマークしました(crrev.com/c/6298909)。

ChromeDriver 134

新機能

  • バウンス トラッキング対策(DIPS): RunBounceTrackingMitigations コマンドを使用して、バウンス トラッキング対策の ChromeDriver サポートを再導入しました。統合テストが再構築され、個別のページが使用されるようになりました。これにより、コマンドの実行前にステートフル バウンスが正しく記録されるようになります。この機能は nav-tracking-mitigations 仕様をサポートしており、//chromecrrev.com/c/4935955バグ: 1474656)で実装されています。(注: 元々は crrev.com/c/4873672 で追加されましたが、後に元に戻されました)。
  • BiDi: ChromeDriver を更新し、標準の WebDriver BiDi 拡張機能のプロパティを goog: プレフィックスとともに使用して、アップストリームの chromium-bidi の変更に合わせました。以前の channel プロパティは使用できなくなりました(crrev.com/c/6179410)。
  • Windows: Windows の chromedriver.exe バイナリにバージョン リソースを追加しました(crrev.com/c/6114586バグ: 385300323)。

バグの修正

  • MPArch/ターゲット: ChromeOS でプライマリ ターゲットの決定中に Chrome 拡張機能ターゲット(chrome-extension://)が誤って検出され、関連付けられていた回帰を修正しました。これにより、後続のコマンド(ナビゲーションなど)が失敗していました。この初期フェーズで拡張機能のターゲットが適切にスキップされるようになりました(crrev.com/c/6183202バグ: 385241097)。
  • MPArch/ターゲット: 拡張機能のターゲット サポートが無効になっている場合、拡張機能の background_page のタブ ターゲットがトップレベルのウェブビューから適切にフィルタリングされないという別の回帰を修正しました(crrev.com/c/6160774バグ: 385731198)。
  • MPArch/ナビゲーション: MPArch のアクティベーション中にタブにアクティブなページが一時的に添付されず、ChromeDriver が誤ってエラー状態と認識する問題を修正しました。ChromeDriver は、タブが新しいページを取得してナビゲーションを完了するまで待ってから、状態を解決するようになりました(crrev.com/c/6177606)。
  • ログ処理: マルチバイト文字を含むログ文字列の不適切な切り捨てが原因で発生するクラッシュ(base::Value() での DCHECK の失敗)を修正しました。ロジックが更新され、単純な std::string の長さチェックではなく UnicodeString の境界検出が使用されるようになり、有効なコードポイントが保証されるようになりました(crrev.com/c/6210809バグ: 367752739)。
  • テスト: 最近の MPArch のリファクタリングにより ChromeDriver で正しく実行できるようになったため、プリレンダリング関連の WPT のほとんど(既知の API の問題があるものを除く)を content_shell から headless_shell に移行しました(crrev.com/c/6168830バグ: 42323502バグ: 366257368)。

内部の変更とリファクタリング

ChromeDriver 133

新機能

  • アーキテクチャ: 複数のページ アーキテクチャ(MPArch)とタブ ターゲットをサポートするように ChromeDriver をリファクタリングしました。WebViewImplAutoAttach を介してタブ ターゲットに接続されるようになりました。以前はページを保持していたコマンドが、タブの下にあるアクティブなページを探すようになりました。この変更により、拡張機能のバックグラウンド ページを内省できるようになります。これにより、enable_extension_targets 機能でバックグラウンド ページをターゲットにできるようになります(デフォルトでは、拡張機能のターゲットはスキップされます)。(crrev.com/c/5961156バグ: 379767670バグ: 42323502)。chrome-extension:// URL ページが拡張機能のターゲットとして誤って含まれていた回帰を修正しました。選択は type=background_page のみに元に戻ります(crrev.com/c/6093588バグ: 383141569)。enableExtensionTargets を最上位の機能ではなく Chrome オプションに移動しました(crrev.com/c/6093032)。
  • Classic: 複数キー要素参照のサポートを再確立しました。このドキュメント化されていない機能は、W3C モードと非 W3C モードの両方に対応する参照を作成するために使用されることが多く、正式にサポートされ、統合テストの対象となりました(crrev.com/c/6063257バグ: 379584343)。

バグの修正

  • 安定性: browsingContext.close コマンドの処理時に ChromeDriver が無期限にブロックされるのを防ぎました。ブラウザを閉じる必要があるかどうかを判断するメカニズムを変更したことで、ChromeDriver は beforeunload プロンプトを適切に処理できるようになり、停止しなくなりました(crrev.com/c/6080431バグ: 42323838バグ: 379049702)。
  • ナビゲーション: URL が about:blank?test のダミーページで停止が発生するバグを修正しました。応答しない新しいウィンドウ(baseURL==about:blankdocumentURL!=about:blank)を識別するためのヒューリスティックで、これらのクエリ文字列 URL が特殊なケースとして正しく処理されるようになりました(crrev.com/c/6038039バグ: 377410086)。
  • ナビゲーション: AbortedByNavigation エラーで失敗したコマンドを再試行するロジックを追加しました。ChromeDriver は、標準の Timeout エラーを返す前に、コマンドを数回試行するようになりました(crrev.com/c/6012427バグ: 42323825)。
  • 診断: NavigationTracker を介して kTargetCrashed エラーを直接転送しました。ナビゲーション検出中にターゲットがクラッシュした場合、一般的なタイムアウトではなく、この特定のエラーがユーザーに表示されるようになり、診断が改善されました(crrev.com/c/6032612バグ: 377410086)。
  • Android: chrome_android_impl.cc でのタブ ターゲットのルックアップを修正しました(crrev.com/c/6110492バグ: 384781876)。
  • テスト: win11-arm64 でのいくつかのウィンドウ サイズ変更テスト(隠れた要素のクリックなど)の不安定さを修正しました。リサイズ オペレーションの後、ウィンドウの再描画が遅いことを考慮して、高さが正しく登録されるまで、テストで内部ウィンドウのサイズが繰り返しクエリされるようになりました(crrev.com/c/6012658バグ: 378470046)。
  • テスト: 汎用的な Python 接続エラーを WebSocketConnectionClosedException にマッピングしてエラー処理を簡素化(crrev.com/c/6054134)、即時の副作用が想定される場所で PostCommand ではなく SendCommand を使用して競合状態を回避(crrev.com/c/6054137)、ExecuteScript の即時効果への依存をより信頼性の高いナビゲーション検出メカニズムに置き換える(crrev.com/c/6063040バグ: 42323825)ことで、統合テストの複数のフレークを修正しました。
  • テスト: FedCmIdpSigninStatus フィーチャー トグルの削除を元に戻しました。削除により破損が発生したためです(crrev.com/c/6082405crrev.com/c/6078693 を元に戻す、バグ: 384866916バグ: 381211734)。
  • ツール: log_replay スクリプトで Print コマンドのサポートを追加しました(crrev.com/c/6010809バグ: 378451938)。

内部の変更とリファクタリング

  • C++ 標準: Mojo.InvalidUTF8String ヒストグラムを削除し、公開 mojo ヘッダーのクリーンアップとそれに続く IWYU カスケードを可能にしました(crrev.com/c/6133861バグ: 40509710バグ: 386793084)。
  • C++ 標準: std::list から base::circular_deque に切り替えることで、WaitableEvent::Wait() での割り当てを回避しました(crrev.com/c/6097198)。
  • C++ 標準: 可能な限り chrome/ コードベース全体で、ユーザー定義の空のコンストラクタとデストラクタをデフォルトに設定(crrev.com/c/6101911crrev.com/c/6056220バグ: 381119547)。
  • メモリの安全性(スパン化): -Wunsafe-buffer-usage 警告(crrev.com/c/6043879バグ: 378069401)に対処する取り組みの一環として、chrome/ 全体で C スタイルの配列を std::array に移行しました。スパン関数での厳密な size_t の使用を実装しました(crrev.com/c/6026238crrev.com/c/6020621)。
  • テスト: フルスクリーン {ref,crash}testswpt_internal/ にアップストリームしました。これは testdriver がサポートするようになったためです(crrev.com/c/6088404)。
  • テスト: --build-directory を正しく配管することで、デフォルト以外の出力ディレクトリ(//out/*-ios-wpt-fyi-rel/ など)を使用している場合に ChromeDriver ラッパーを正しく特定できるように、iOS 向けの wptrunner を修正しました(crrev.com/c/6014940バグ: 374199289バグ: 355218109)。
  • テスト: クライアントで致命的なエラーが検出されない回帰ケースを示す testBrowserCrashWhileWaitingForEvents 統合テストを追加しました(crrev.com/c/6025145バグ: 379049702)。
  • テスト: headless_shell と ChromeDriver を組み合わせて実行するとクラッシュする特定の WPT を抑制し、ビルダーを安定化しました(crrev.com/c/6032163バグ: 377410086)。

ChromeDriver 132

新機能

  • テスト: ChromeDriver 統合テストに repeatretry-limit コマンドライン パラメータのサポートを追加し、標準の isolated-script-test-repeatisolated-script-test-launcher-retry-limit 引数にマッピングしました(crrev.com/c/5938195バグ: 374681919)。ローカルで実行されるテスト(非 CI)の場合、デフォルトの retry-limit が 0 に変更されました(crrev.com/c/5953326バグ: 374681919)。
  • WebSockets: EmbeddedTestServerWebSocketConnection と関連クラスを実装し、WebSocket 関連のテストを SpawnedTestServer から移行できるようにしました。これには、プロトコルに沿ったフレーミングと、ハンドラの登録の簡素化が含まれます(crrev.com/c/5849732バグ: 40812029)。

バグの修正

  • 安定性: クリック コマンドによってブラウザが閉じられた場合に発生する可能性のある ChromeDriver のクラッシュを修正しました。これは、以前のリファクタリングで導入された kTargetDetached エラー状態を適切に処理することで実現しました(crrev.com/c/5934524バグ: 42323264)。
  • 安定性: レースコンディション(競合状態)を解決することで、Mac ARM64 の testClickNavigateRemoteToLocal 統合テストで発生する断続的なクラッシュを修正しました(crrev.com/c/5975526バグ: 375971185)。
  • ナビゲーション: ドキュメントがアクティブな状態から移行している間(ナビゲーションが進行中であることを示す)に Page.getNavigationHistory が呼び出された場合に、以前は失敗していた GoBack コマンドと GoForward コマンドを修正しました。ChromeDriver は、このシナリオでコマンドを正しく再試行するようになりました(crrev.com/c/6011739バグ: 378433873)。
  • スクリプトの実行: ナビゲーションをトリガーしたり、ウィンドウを閉じたりするスクリプトが、ブラウザ側で結果が保証されない場合に標準の ScriptTimeout エラーを正しく返すようにしました。これにより、ユーザーは曖昧なテスト構造を避けるよう促されます(crrev.com/c/5934265バグ: 372883701)。
  • スクリプトの実行: ログの再生機能が「予期しないコマンド レスポンス」エラーで失敗する問題を修正しました(crrev.com/c/5961142バグ: 42323342)。
  • エラーコード: ChromeDriver のエラー処理を修正し、すべての例外を「code」プロパティで強制的に汎用の「javascript error」にラップしないようにしました。これにより、「stale element reference」(call_function.js から)や「invalid element state」(Selenium Atoms CLEAR 関数から)などの標準エラーがユーザーに正確に伝播されます(crrev.com/c/5937893バグ: 42323409)。GetElementTagName のエラー処理を改善し、タグ名情報の欠落を「オブジェクトは Element ではありません」と正しく解釈するようにしました(crrev.com/c/5929087)。
  • BiDi: カスタム ユーザー プロファイルを使用している場合に BiDi セッションの初期化に失敗する問題を修正しました。カスタム プロファイルで読み込まれたページが BiDiMapper の起動を妨げる可能性がありました。ChromeDriver は、マッパーのクリーンな状態を確保するため、最初のタブで常に data:, が読み込まれるようにします(crrev.com/c/5960656バグ: 366886096)。
  • シークレット モード: シークレット モードで動作中に ChromeDriver が新しいタブを作成できないバグを修正しました(crrev.com/c/5952980バグ: 42323352)。
  • テスト: testScriptNavigateRemoteToLocal 統合テストの不安定さを修正(8.33% の確率で失敗していた)し、競合状態の修正を再現して検証するための C++ 統合テストを追加しました(crrev.com/c/6010867バグ: 378387680)。
  • テスト: Mac(testWindowMinimize)と Windows(ChromeDownloadDirTest.testFileDownloadAfterTabInvalidCertificateTest.*)、およびグローバル(testShadowDomFindElement、要素のスクリーンショット テスト)で、以前に不安定だった統合テストを多数再度有効にしました。不安定な css/css-scrollbars/ WPT テストをヘッドレス シェルからコンテンツ シェルに一時的に戻しました(crrev.com/c/5953708crrev.com/c/5948803crrev.com/c/5941351crrev.com/c/5941098crrev.com/c/5959254バグ: 42323825バグ: 40848017バグ: 40736504バグ: 40176424バグ: 40927590)。

内部の変更とリファクタリング

  • BiDi: chromium-bidi マッパーの依存関係を更新し、最新のアップストリーム修正とプロトコルの更新を組み込みました(crrev.com/c/5953339crrev.com/c/5865478バグ: 4226)。(注: WPT の失敗により、マッパーの引き上げが一時的に元に戻され、その後再適用されました(crrev.com/c/5961113))。
  • アーキテクチャ: ChromeDriver 全体でスレッドローカル セッション オブジェクトの使用を最小限に抑え、テスト間の状態共有バグを防ぎ、明示的なセッション処理を簡素化しました(crrev.com/c/5978486バグ: 42323555)。共有テスト フィクスチャを使用するように C++ 統合テストをリファクタリングしました(crrev.com/c/5971474バグ: 42323555)。
  • クリーンアップ: 以前の chrome-headless-shell コードが Chrome に存在しなくなったため(crrev.com/c/5961602バグ: 42323387)、「以前のヘッドレス」モードに固有の非推奨の回避策を削除しました。
  • クリーンアップ: 以前に削除された ChromeDriver の受け入れテストの残骸である、未使用の java_tests.txt ファイルを削除しました(crrev.com/c/5970994バグ: 357737793)。
  • テスト: ChromeDriver が同じ user-data-dir で並列セッションを誤って作成したり、セッション間で URL が漏洩したりしないことを確認する C++ 統合テストを追加しました。これにより、不安定さが発生する可能性があります(crrev.com/c/5961137バグ: 375312517)。
  • テスト: 統合テストでスピンアップされた一時的な ChromeDriver インスタンスが、リソースを解放するためにできるだけ早くシャットダウンされるようにしました(crrev.com/c/5997970バグ: 375974725)。

ChromeDriver 131

新機能

  • BiDi: chromium-bidi マッパーの依存関係を v0.8.0 に更新し、最新のプロトコル更新とバグの修正を組み込みました(crrev.com/c/5899240crrev.com/c/5865478バグ: 4226)。
  • DOM アクセス: GetElementShadowRoot コマンドで閉じられたシャドウルートのサポートを追加しました。以前は、このコマンドは、閉じられたシャドウ ルートにアクセスしようとすると NoSuchShadowRoot エラーを返していました(crrev.com/c/5923865バグ: 372834222)。
  • DOM アクセス: ウィンドウとフレームの識別子のサポートを実装し、実行されたスクリプトからウィンドウまたはフレーム(OOP Iframe を含む)への参照を返して、さらに逆参照できるようにしました(crrev.com/c/5890437crrev.com/c/5923555バグ: 366272556バグ: 40229283)。
  • WebAuthn: WebAuthn 自動化 API を拡張し、userName プロパティと userDisplayName プロパティを含めました(crrev.com/c/5905423バグ: 367915823)。

バグの修正

内部の変更とリファクタリング

  • メモリ安全性(スパン化): net::HttpUtil で安全でないポインタの使用を base::span に置き換え(crrev.com/c/5854420)、base::File::WriteAtCurrentPos() をスパンベースの同等物に移行しました(crrev.com/c/5818972)。マップ ポインタ値(std::mapstd::unordered_map など)を raw_ptr に書き換えました(crrev.com/c/5867189バグ: 329428315)。
  • C++ 標準: Abseil 属性マクロ(ABSL_ATTRIBUTE_*)を標準の base/ マクロ(crrev.com/c/5852373)に置き換えました。値渡し文字列/ベクターを適切な std::string_view または const 参照に置き換え、std::string_view 引数から不要な const 修飾子を削除することで、意図しないコピーを回避しました(crrev.com/c/5914620crrev.com/c/5906184バグ: 369952985)。
  • インフラストラクチャ: ChromeDriver を使用して web-engine を制御するように Fuchsia を構成しました(crrev.com/c/5867896バグ: 40935291)。
  • テスト: レガシー ランナーが WebAuthn testdriver API のサポートをまもなく終了するため、フェンス付きフレームの WebAuthn テストをレガシー コンテンツ シェル ランナーから ChromeDriver を使用したヘッドレス Chrome に移行しました(crrev.com/c/5920770バグ: 372169469)。

ChromeDriver 130

新機能

  • BiDi: BiDi Mapper の依存関係を更新し、アップストリーム chromium-bidi から最新のプロトコル アップデートとバグの修正を取得しました(crrev.com/c/5850570crrev.com/c/5840080 の取り消し後に crrev.com/c/5837065 を再適用、crrev.com/c/5717956バグ: 4226)。
  • BiDi: BiDi セッションの初期化時に session.new コマンドを介して unhandledPromptBehavior を Mapper に直接提供するように ChromeDriver を更新しました。これで、MapperOptions からの移行が完了します(crrev.com/c/5682934crrev.com/c/5766077バグ: 42323841バグ: 356371297)。
  • テスト: デスクトップ ビルドの bisect-builds.py スクリプトに --chromedriver 引数のサポートを追加しました。これにより、WebDriver/ChromeDriver 依存テストの二分法で、スクリプトが ChromeDriver の正しいバージョンを自動的にダウンロードして使用できるようになります(crrev.com/c/5861048バグ: 352344089)。

内部の変更とリファクタリング

  • C++ 標準: さまざまなクラスで「rule-of-five」の問題を解決しました。Chrome スタイル プラグインは、アウトオブラインの移動コンストラクタを強制することなく、アウトオブラインのデストラクタを要求するため、コンパイラは移動演算子を暗黙的に削除し、コピーにサイレントにフォールバックしていました。これらの欠落していた宣言が追加されました(crrev.com/c/5846757バグ: 364788123)。
  • テスト: ハードコードされた chrome 文字列を実際に使用されたプロダクトに置き換え、詳細な command アーティファクトを概要出力から非表示にすることで、wptrunner テスト結果の概要をクリーンアップしました(crrev.com/c/5825633バグ: 41494889)。
  • テスト: macOS 15(Mac15)の ChromeDriver 統合テストで発生していた大規模なテストの失敗を修正しました。この OS でのテストは Mac14 よりも大幅に時間がかかるため、特定のタイムアウトを 2 倍にしました。また、不安定さのため、4 つの仮想センサーテストが無視リストに追加されました(crrev.com/c/5817455バグ: 354939744)。
  • テスト: Mac で不安定な ChromeDriverSiteIsolation.testClickNavigateLocalToLocal テスト(crrev.com/c/5806894バグ: 361521805)と Windows 11 で不安定な ChromeDriverTest.testClickElement*ObscuredByScrollBar テスト(crrev.com/c/5804083バグ: 360058651)を無効にしました。
  • テスト: インフラストラクチャに関するいくつかの問題のため、ChromeDriver の受け入れテスト(古い Chrome バージョンをダウンロードして現在の ChromeDriver に対してテストしていた)を削除しました。これらは、後で CI で自動ロールバックにより再度追加される可能性があります(crrev.com/c/5812142バグ: 357737793)。

ChromeDriver 129

新機能

  • BiDi: ChromeDriver セッションの初期化ヘルパーを更新し、session.new コマンドを BiDi Mapper に送信できるようにしました。これにより、マッパーが機能を直接処理できるようになります。これは、MapperOptions を削除するための最初のステップです(crrev.com/c/5741432バグ: 356371297)。(注: 関連する変更 crrev.com/c/5754093 で処理済みの unhandledPromptBehavior が提供されていましたが、テスト カバレッジの低下により crrev.com/c/5755744 で元に戻されました)。
  • コンピューティング プレッシャー: 仮想プレッシャー ソース管理用の新しい拡張コマンドを追加し、コンピューティング プレッシャー仕様の自動化セクションを実装しました。これらのコマンドは解析され、CDP レイヤに転送されます(crrev.com/c/5666583バグ: 347031400)。
  • 拡張機能 MV2: 継続中の拡張機能 Manifest V2 のサポート終了フィールド トライアルの一環として、MV2 の動作をテストするテストを更新し、ScopedTestMV2Enabler を使用するようにしました(crrev.com/c/5685054バグ: 339061151)。

バグの修正

  • 従来のシリアル化: WebDriver Classic スクリプト実行結果で Set をシリアル化する際に、検出されたオブジェクトを追跡し、無限ループを防ぎ、Array.prototype.includes のオーバーライドを許容します(crrev.com/c/5765833バグ: 357472850)。(注: これは WPT 回帰のため、後で crrev.com/c/5773175 で元に戻されました)。

内部の変更とリファクタリング

ChromeDriver 128

新機能

  • 機能: unhandledPromptBehavior 機能で辞書の使用を許可し、標準の機能構造に沿ったものにしました。ただし、Mapper ではまだ完全に尊重されていません(crrev.com/c/5692204crrev.com/c/5682934バグ: 42323841)。
  • 起動: ChromeDriver に --ignore-explicit-port コマンドライン引数を追加しました。この一時的な回避策により、ChromeDriver は明示的に指定されたポートを無視し、代わりに空きポートを見つけてバインドするようになります。これにより、ウェブ プラットフォームのテスト実行中に発生する TCP ポートの競合が解決されます(M132 以降で削除される予定です)(crrev.com/c/5724574crrev.com/c/5703976バグ: 42323836)。

バグの修正

  • センサー: setSensorOverrideReadings CDP コマンドは値を返さないため(crrev.com/c/5703589)、ExecuteUpdateVirtualSensor コマンドで SendCommandAndGetResult() ではなく SendCommand() を使用するように修正しました。
  • FedCM: FedCM ChromeDriver テストで、ダイアログが実際に想定される場合に NoSuchDialog が返されることをアサートしないようにすることで、競合状態を修正しました。これにより、ダイアログがすぐに表示された場合に発生するエラーを防ぎます(crrev.com/c/5713515バグ: 346530330)。
  • テスト: 基盤となる問題(crbug.com/40233722)が修正されたため、Mac で WebAuthn 仮想認証システムのテストを再度有効にしました(crrev.com/c/5635806バグ: 329130177)。
  • エラー メッセージ: execute/async コマンドのエラー メッセージのタイプミスを修正しました(crrev.com/c/5697913)。

内部の変更とリファクタリング

ChromeDriver 127

バグの修正

  • 安定性: DevTools クライアントが他のコマンドをアクティブに処理しているときに target.detachFromTarget コマンド(または target.detachedFromTarget イベント)を受信したときに発生する ChromeDriver のクラッシュを修正し、WebView オブジェクトと DevToolsClient オブジェクトの早期リリースを防ぎました(crrev.com/c/5527584バグ: 339773537)。
  • 安定性: コマンドの実行中にウェブビューが切り離されると、Switch To Window コマンドが「不明なエラー」を誤って返す問題を修正しました。これにより、「ウェブビューが見つかりません」という内部エラーが正しく無視されるようになり、ターゲット ウィンドウが実際に閉じられた場合は、標準の「そのようなウィンドウはありません」というレスポンスが返されるようになります(crrev.com/c/5583730バグ: 338616700)。
  • 安定性: 内部 WebView リストの更新中に ChromeDriver がターゲットの切り離しを許容するようにしました。更新中にターゲットがデタッチされた場合、ChromeDriver は非標準のエラーを返す代わりに再試行するようになり、ウィンドウが急速に作成、破棄される環境での不安定さが軽減されます(crrev.com/c/5565103バグ: 338616700バグ: 4771)。
  • ナビゲーション: 要素を検索する際に、リモート エンドで検出されたナビゲーションを待機するロジックを ChromeDriver に追加しました。これにより、ナビゲーションが要素検索オペレーションと一致した場合に、ChromeDriver が非標準のエラーを返したり、DCHECK でクラッシュしたりすることがなくなります(crrev.com/c/5563113crrev.com/c/5563420 の取り消し、crrev.com/c/5562089 の再着地、バグ: 4771)。
  • BiDi: セッション作成時の ChromeDriver と BiDiMapper 間の競合状態を修正しました。ChromeDriver は、browsingContext.getTree コマンドが空でないリストを返すまで待機してから NewSession コマンドを終了するようになりました。これにより、新しく作成されたデフォルトのタブが適切に登録されます(crrev.com/c/5575497バグ: 341048786バグ: 1503101)。
  • BiDi: セッション作成後にフォーカスがアクティブなユーザータブではなく BiDiMapper のバックグラウンド タブに残る問題を修正しました。具体的には、ユーザーの最初のタブに明示的にフォーカスを付与しました(crrev.com/c/5594070バグ: 341048786バグ: 1503101)。
  • BiDi: BiDi コマンド(browsingContext.close など)を処理する際に ChromeDriver が Target の接続を試行しないようにしました。これにより、ユーザー プロンプトが開いている場合に CDP コマンドが無限に停止するのを防ぎ、処理をすでに接続されている BiDi レイヤに完全に委任します(crrev.com/c/5541915crrev.com/c/5539818 を取り消し、crrev.com/c/5522393 を再適用、バグ: 4758)。
  • FedCM: ダイアログが誤って閉じられたとマークされる fedcm-loginhint.https.html WPT テスト失敗を修正しました。状態は selectAccount オペレーションが実際に成功した場合にのみ更新されるようになりました(crrev.com/c/5398379バグ: 331237776)。
  • テスト: 文字が kExtendedASCIIStart の境界に正確に一致した場合の JSON 解析中の DCHECK の失敗を修正しました(crrev.com/c/5565276バグ: 40284755)。
  • テスト: iframe 要素をスクロールの起点として使用し、ポインタ移動の入力を整数に丸めることで、scrollend-event-fires-to-iframe-window.html WPT テストを修正しました。これにより、小数点のタッチ位置で ChromeDriver エラーが発生するのを防ぎます(crrev.com/c/5570150バグ: 340956654)。
  • テスト: run_py_tests.py がブラウザ バイナリを見つけられなかった場合に、試行されたパスを出力することで、ChromeDriver 統合テストの診断を改善しました(crrev.com/c/5604204バグ: 4781)。

内部の変更とリファクタリング

ChromeDriver 126

新機能

  • BiDi: WebDriver BiDi セッションでブラウザを起動する際に --disable-background-timer-throttling スイッチを指定するように ChromeDriver を更新し、バックグラウンド タブがスロットリングされないようにしました(crrev.com/c/5515013バグ: 4762)。
  • BiDi: 詳細ロギングが必要な場合にデバッグ メッセージ(sendDebugMessage)を送信する BiDi Mapper のサポートを追加しました。ChromeDriver はこれらのイベントを解析用に bidi messages としてマークしますが、BidiTracker は現在これらのイベントを無視します(crrev.com/c/5465782バグ: 4753)。
  • 従来版: beforeunload ダイアログ(アラート)の自動承認を実装しました。これは、従来版のセッションでは表示してはならないという WebDriver 標準に準拠したものです(crrev.com/c/5517510バグ: 4757)。

バグの修正

  • Classic: 要素取得ロジックの冗長な最大試行回数の制限を削除しました。取得は暗黙的なタイムアウトのみで制限されるようになり、オペレーションが早期に失敗して非標準の NoSuchExecutionContext エラーが誤って返されるシナリオを防ぎます(crrev.com/c/5478668バグ: 4379)。
  • Classic: 無効な位置情報戦略が取得リクエストで使用された場合に、ChromeDriver が invalid selector エラーではなく javascript error で応答する回帰を修正しました(crrev.com/c/5490662バグ: 4743)。
  • Classic: Android のウィンドウ コマンド(最大化、最小化、全画面表示)が、これらのアクションは Android ブラウザでサポートされていないため、続行する代わりに標準に準拠した unsupported operation エラーを返すようにしました(crrev.com/c/5490224バグ: 4689)。
  • クラシック: ChromeDriver が kChromeNotReachable 内部エラーコードを返さないように修正しました。HTTP クライアントがブラウザに接続できない場合、標準の kSessionNotCreated エラーが適切に返されるようになりました(crrev.com/c/5476390バグ: 4379)。
  • クラシック: ウィンドウ コマンドの実行時に ChromeDriver が非標準の kNoSuchExecutionContext エラーを返さないように修正しました(crrev.com/c/5483606バグ: 4379)。
  • : 使用されていないサポート対象外の kForbidden エラーコードを、サポート対象のエラーコードのリストから削除しました(crrev.com/c/5476927バグ: 4379)。
  • BiDi: 専用の Mapper タブを閉じる前にユーザーに確認するよう ChromeDriver を更新し、アップストリームの chromium-bidi の変更に対応しました(crrev.com/c/5508600バグ: 4761)。

内部の変更とリファクタリング

ChromeDriver 125

新機能

  • デバイスのポーズ: デバイスのポーズ管理用の ChromeDriver コマンドを追加し、デバイスのポーズ仕様の自動化セクションをサポートしました。これにより、ハードウェアで設定されたデバイスの姿勢をオーバーライドし、拡張機能コマンドでオーバーライドを削除できるようになります(crrev.com/c/5437993バグ: 330376761)。

バグの修正

  • BiDi: 受信した BiDi コマンド id の中間ストレージを Double から base::Value に変更しました。これにより、JSON シリアル化後に予期しない末尾の小数点や小数部なしで、id がレスポンスで正確にエコーバックされます(crrev.com/c/5444225バグ: 4676)。
  • FedCM: IDP の準備が整った後、ID アサーション エンドポイントで CORS を有効にする変更を再適用しました(crrev.com/c/5440132crrev.com/c/5381316 を元に戻し、crrev.com/c/5370086 を再適用、バグ: 40284123)。
  • FedCM: selectAccount コマンドが成功した場合にのみダイアログが閉じられたとマークされるようにして、ダイアログが誤って閉じられたとマークされるバグを修正しました。これにより、想定されるアカウント選択ツールなしで selectAccount が呼び出された場合のテストの失敗が解決されます(crrev.com/c/5398379バグ: 331237776)。アカウント選択ツールが想定されていない場合に fedcm_get_and_select_first_account を呼び出さないようにして、このバグがトリガーされないようにしました(crrev.com/c/5398800)。
  • テスト: アクション シーケンスを組み合わせてメインフレームのドキュメントを pointerUp アクションのオリジンとして使用することで、popover-light-dismiss.html WPT テストの失敗を修正しました。これにより、ChromeDriver がフレーム間で同時に pointerUp イベントを誤って送信することを防ぎます(crrev.com/c/5402096バグ: 325981758)。
  • テスト: wptrunner を修正し、stderr 出力(--enable-chrome-logs 使用時に書き込まれたブラウザログを含む)を crash_log ではなく stderr アーティファクトに正しく転送するようにしました。また、ハーネスエラー(ブラウザのスタック トレースを含む)を crash_log に移動しました(crrev.com/c/5437023バグ: 41494889)。
  • テスト: ChromeDriver プロセスで出力をグループ化してブラウザログを正しいテスト アーティファクトにルーティングし、並列テスト実行中のログのインターリーブと孤立を防ぐように wptrunner を修正しました(crrev.com/c/5320681バグ: 41494889)。

内部の変更とリファクタリング

  • BiDi: BiDi Mapper の依存関係を更新し、最新のプロトコルの機能強化とバグの修正を統合しました(crrev.com/c/5433300crrev.com/c/5393442バグ: 4226)。(注: 以前のバンプ crrev.com/c/5374366crrev.com/c/5374839 で取り消され、その後、不安定なテストを無効にしてライセンスを更新した crrev.com/c/5374914 で再着地しました)。
  • 診断: Chrome の StackTrace を ChromeDriver の例外に組み込みました。ページやタブのクラッシュ(Mac のダングリング ポインタなど)が原因でセッションが削除された場合に、エラー メッセージにブラウザのスタック トレースが表示されるようになり、デバッグのしやすさが大幅に向上しました(crrev.com/c/5374371バグ: 330009945)。
  • テスト: Mac(特に mac-arm64)で不安定な testTakeLargeElementViewportScreenshot 統合テストを一時的に無効にしました(crrev.com/c/5447515バグ: 333826980)。
  • テスト: テスト環境(CEL)の ChromeDriver 起動引数を更新し、Selenium 4+ の構文(crrev.com/c/5448812バグ: 308885357)と一致するようにしました。
  • テスト: 各 WPT テストの実行に使用された正確な chrome コマンドラインを chromedriver ログから抽出し、command という名前の ResultDB アーティファクトに保存しました。これにより、run_blink_wptserve.py を使用した手動デバッグが容易になります(crrev.com/c/5441189バグ: 41494889)。
  • 依存関係: selenium-atoms の依存関係リストから Closure を削除しました。これにより、ChromeDriver のサードパーティ通知からも削除されました(crrev.com/c/5424804バグ: 4226)。
  • 依存関係: ベース リポジトリ全体で dynamic_annotations の未使用の依存関係を削除しました(crrev.com/c/3398908バグ: 1282422)。
  • フォーマット: 問題のある Windows ヘッダーに新しい clang-format 構成を適用しました(crrev.com/c/5367127バグ: 329138753)。

ChromeDriver 124

新機能

  • BiDi: ソースマッパーが CIPD から縮小されていない状態でダウンロードされるようになったため(crrev.com/c/5310075バグ: 4226)、BiDiMapper スクリプトを縮小してから ChromeDriver に埋め込むビルドステップを追加しました。
  • WebAuthn: SetCredentialProperties コマンドを追加し、クライアントが WebAuthn 認証情報のバックアップ フラグを更新できるようにしました(crrev.com/c/5296389バグ: 40945430)。
  • WebAuthn: WebDriver を通じて WebAuthn バックアップ フラグを公開しました。そのため、「仮想認証システムの追加」コマンドに defaultBackupEligibilitydefaultBackupState を、「認証情報の追加」コマンドに backupEligibilitybackupState を追加しました(crrev.com/c/5297117バグ: 40945430)。
  • テスト: ChromeDriver Python 統合テストに --failfast コマンドライン引数のサポートを追加しました。これにより、最初のエラーでテスト実行が停止し、デバッグに役立ちます(crrev.com/c/5374546)。
  • テスト: testdriver-vendor.js API を介して SetRPHRegistrationMode webdriver コマンドの content-shell サポートを追加しました(crrev.com/c/5205730バグ: 1359103)。

バグの修正

  • 安定性: ChromeImpl::SetWindowBounds のポーリングと待機ループの本体内でタイムアウトの有効期限チェックを移動しました。これにより、高負荷時に最初のループの反復処理が行われる前にタイムアウトが期限切れになる可能性がある問題が修正されます(crrev.com/c/5366899バグ: 4642)。
  • パフォーマンス: ウィンドウの境界がまだ目的の状態に達していない場合にのみ指数バックオフ待機を適用することで、ChromeImpl::SetWindowBounds の待機時間を最小限に抑え、WPT の設定レイテンシを短縮しました(crrev.com/c/5366457バグ: 4642)。
  • 起動: content_shell のデータ ディレクトリを指定する際に --data-path ではなく --user-data-dir を使用するように ChromeDriver を更新し、アクティブな DevTools ポートの読み取り方法と一致させました(crrev.com/c/5226609バグ: 1295373)。

内部の変更とリファクタリング

  • BiDi: BiDi Mapper の依存関係を更新し、最新のプロトコルの修正と機能を取り込みました(crrev.com/c/5374366crrev.com/c/5349491crrev.com/c/5317650バグ: 4226)。(注: テスト失敗により、バンプが一時的に元に戻され、再度着地しました(crrev.com/c/5374839crrev.com/c/5368680crrev.com/c/5319423))。
  • absl::optional の型エイリアスへの移行に伴い、コードベース全体で absl::optional の使用を std::optional に置き換えました(crrev.com/c/5296147バグ: 1500249)。
  • MiraclePtr(raw_ptr)の対象範囲を、std::liststd::unordered_setbase::flat_setstd::stackstd::queue などの追加の標準コンテナに拡大しました(crrev.com/c/5306923バグ: 325302189)。
  • WriteBigEndian()base::numerics バイト変換または BigEndianWriterbase::span を受け入れるようになりました)を使用するように変換し、ビッグ エンディアン バイトの書き込み時の安全性を改善しました(crrev.com/c/5202348バグ: 1490484)。
  • ChromeDriver を使用して content_shell で Web プラットフォーム テスト(WPT)を実行するように切り替えました(仮想テストと上流のバグ修正待ちの reftest を除く)(crrev.com/c/5347371バグ: 40214293)。
  • 既存のすべての汎用センサー ウェブテストを、JS/Mojo モックではなく test_driver.js と仮想センサーを使用するように変換し、汎用センサー仕様の新しい自動化セクション(crrev.com/c/4770867バグ: 1278377バグ: 1471996)に合わせました。
  • append_notices.py を追加して BiDiMapper 依存関係のクレジットを生成し、licenses.py 呼び出しを更新してサードパーティの通知に selenium-atoms README のみを参照するようにすることで、ライセンス生成を改善しました(crrev.com/c/5350601crrev.com/c/5339957バグ: 4729バグ: 4735)。

ChromeDriver 123

新機能

  • FedCM: 単一アカウント ボタン フローのモーダル ダイアログを表示します。これには、自動化インターフェースでのモーダルビューのサポートの追加が含まれます(crrev.com/c/5231438バグ: 1518356)。
  • FedCM: FedCM ダイアログ内のリンクを開く ChromeDriver のサポートを実装し、自動化を簡素化するためにボタンとして扱います(crrev.com/c/5225543バグ: 1513520)。
  • センサー: WebDriver の仮想センサー コマンドを修正し、最近の方向センサーの仕様の更新に準拠して、クォータニオンではなくオイラー角(アルファ、ベータ、ガンマ)を読み取るようにしました。内部 CDP とサービスレイヤは、変換ステップを介して引き続きクォータニオンを使用します(crrev.com/c/5229177バグ: 1506995バグ: 1520912バグ: 1520919)。

バグの修正

  • クラシック: スクリプトを介して別のフレームからノードを返すと、誤って StaleElementReference エラーが発生する問題を修正しました。WebDriver 標準に準拠して JavaScriptError が正しく返されるようになりました(crrev.com/c/5222746バグ: 4668)。
  • テスト: タッチ ドラッグがウィンドウの境界外に伸びていたため、Chrome/ChromeDriver で失敗していたオーバースクロール イベントのテストを修正しました。ドラッグが適切に制約されるようになりました(crrev.com/c/5297676バグ: 40832230)。
  • テスト: open-close.https.html MIDI テストを修正し、不必要に Promise を構築しないようにしました。これにより、ChromeDriver がテストに失敗する原因となっていた未処理の Promise の拒否を回避しました(crrev.com/c/5239869バグ: 1499775)。
  • テスト: wpt_internal/system-wake-lock/idlharness* テストで設定された権限セットを修正しました。test_driver.set_permission(...)null または WindowProxy ではなく false を誤って渡していたため、ChromeDriver が混乱していました(crrev.com/c/5271087バグ: 40287920)。

内部の変更とリファクタリング

  • BiDi: BiDi Mapper の依存関係を更新し、最新の修正と機能を取得しました(crrev.com/c/5205452crrev.com/c/5255321crrev.com/c/5238148crrev.com/c/5237125バグ: 4226)。(注: ビルドの失敗 crrev.com/c/5238855 により、バンプが一時的に元に戻され、再度適用されました)。
  • ChromeImplDevToolsClientImpl の両方で、基底クラスから派生クラスへの安全でない静的キャストを排除することで、ChromeDriver のコードの健全性を改善し、未定義の動作の可能性を回避しました(crrev.com/c/5277062crrev.com/c/5272562バグ: 4702)。
  • WebViewImpl で安全でないキャストを削除しました(crrev.com/c/5272230バグ: 4702)。
  • 非推奨の base::Base64Encode() 形式を削除し、out パラメータを使用する代わりに、新しい std::string 戻り値のバリアントに移行しました(crrev.com/c/5179900crrev.com/c/5246585バグ: 1486214)。
  • 一貫性を保つため、base/... のすべての #include ディレクティブを更新し、<> ではなく "" を使用するようにしました(crrev.com/c/5237376バグ: 1500249)。
  • chrome/test/ のすべての DIR_METADATA ファイルを Buganizer に移行しました(crrev.com/c/5284119バグ: 1518875)。
  • stderr はすでに stdout にリダイレクトされているため(crrev.com/c/5282721)、不要な chromedriver --log-path=- スイッチを削除することで、-vvv を渡すときに wptrunner がローカルの - ファイルを作成しないようにしました。
  • 回帰が発生した場合にテスト結果を要約するよう wptrunner を強化しました。要約出力にサブテストの結果と ChromeDriver スタック トレースを明示的に含めます(crrev.com/c/5238662バグ: 1521922)。
  • run_py_tests.py--remote-chromedriver-port パラメータを導入し、デバッガで実行されている既存のインスタンスに接続できるようにすることで、ChromeDriver 統合テストのデバッグを簡素化しました(crrev.com/c/5237254バグ: 4693)。
  • コンパイラが正しいサイズを推測できるように、2 つの引数を持つ base::HexEncode()RandBytes() の呼び出しを回避し、コードを簡素化しました(crrev.com/c/5241357)。

ChromeDriver 122

バグの修正

  • BiDi: loaderId を含めるようにディープノードのシリアル化を更新し、ChromeDriver と BiDi Mapper が過剰なラウンド トリップなしでノードを適切に参照および逆参照できるようにしました(crrev.com/c/5116240バグ: 1420968)。
  • 機能: acceptInsecureCerts 機能を起動時に BiDi Mapper にすぐに渡すように ChromeDriver を更新し、機能が遅れて適用される可能性がある競合状態を防ぎました(crrev.com/c/5125711バグ: 4643)。
  • Classic: <frame_id>.<loader_id>.<backend_node_id> 形式を使用するように要素参照の生成を再設計しました。これにより、ChromeDriver はフレーム ナビゲーションと DOM 更新にわたって、有効な要素参照、不明な要素参照、古い要素参照を明確に区別できるようになりました(crrev.com/c/5094519バグ: 4379)。
  • Classic: 新しく作成されたターゲットが ChromeDriver がアタッチされる前に(競合状態などで)自動的に閉じられた場合、window/handles コマンドが「そのようなウィンドウはありません」というエラーで失敗する問題を修正しました(crrev.com/c/5147409バグ: 1506833)。
  • FedCM: FedCM ダイアログが閉じられたときに通知する内部イベント リスナーを追加し、ダイアログが外部(AbortController.abort など)から閉じられた場合に dialogtype コマンドが古いデータを返すのを防ぎました(crrev.com/c/5067504バグ: 1506292)。
  • FedCM: ClickDialogButton コマンドからベンダー プレフィックスを削除しました。これは、FedCM 仕様で承認されたためです(crrev.com/c/5092527バグ: 1499341)。

内部の変更とリファクタリング

  • BiDi: BiDi Mapper の依存関係を最新バージョンに更新しました(crrev.com/c/5205452バグ: 4226)。
  • すべての DevToolsEventListener から送信される冗長な Page.enable 呼び出しを削除することで、ChromeDriver と Chrome DevTools Protocol(CDP)のトラフィックを削減しました。これは、DevToolsClientImpl がすでにターゲットごとに処理しているためです(crrev.com/c/5088789バグ: 4600)。
  • content_shell のすべての Wptrunner ビルダーを試験運用ステータスに変更しました。これは、ChromeDriver の統合が進行中であるため、プロトコル モードでのテストの実行が現在完全にサポートされていないためです(crrev.com/c/5225148バグ: 1474702)。
  • content_shellwindow.test_driver_internal.get_computed_role を必要とするテストをスキップしました。これはまだ実装されていないため、TypeError の失敗を防ぐためです(crrev.com/c/5189678バグ: 1517744)。
  • OZONE_PLATFORM_* の代わりにプラットフォームに依存しない IS_OZONE_{X11, WAYLAND} フラグを使用するリファクタリングを再適用しました(crrev.com/c/5086329バグ: 1500494)。
  • selenium-atoms 依存関係を最新のリビジョンに引き上げました(crrev.com/c/5110808バグ: 4662)。
  • ポインタ移動入力の丸め、スクロールの origin パラメータの適用、近似アサーション(assert_approx_equals)を使用したスクロール/オフセットの差分(crrev.com/c/5097343)の処理により、完全な Chrome バイナリに対して実行された場合の SnapEvents テストのロジックを修正しました。
  • フォーマット文字列がコンパイル時の定数でない場合に StringPrintf() と区別するための StringPrintfNonConstexpr() ヘルパーを追加しました(crrev.com/c/4950568バグ: 1371963)。
  • chromium::import! rust マクロのエスケープで単射関数を使用して、生成された GN ターゲット名の衝突を防ぐようにしました(crrev.com/c/5132119バグ: 1512174)。
  • コンストラクタを追加し、デストラクタで早期リターンを追加して、ScopedTempDirWithRetry 実装をクリーンアップしました(crrev.com/c/5113843)。

ChromeDriver 121

新機能

  • テスト: ビルドボットで標準の Chrome ブラウザに加えて chrome-headless-shell に対して ChromeDriver 統合テスト(chromedriver_py_test)を実行するためのサポートを追加しました。これには、--browser-name パラメータに基づいてブラウザ バイナリを検出し、特定のテストセットを条件付きで実行する機能が含まれます(crrev.com/c/4995189crrev.com/c/4989442バグ: 4358)。

バグの修正

  • 安定性: KeyboardLayoutEngineManager::SetKeyboardLayoutEngine での DCHECK ヒットによる ChromeDriver のクラッシュを防ぐため、デフォルトの KeyboardLayoutEngineStubKeyboardLayoutEngine として初期化しました(crrev.com/c/5017859バグ: 4625)。
  • 安定性: クライアントが同じ接続のクローズをリクエストした後にセッション スレッドが接続のクローズをリクエストした場合に ChromeDriver がクラッシュする不安定な問題を修正しました(crrev.com/c/4994636バグ: 4606)。
  • リソース管理: ChromeDriver コマンドで例外がスローされた場合でもブラウザ プロセスが終了するようにして、ChromeDriver 統合テスト(RemoteBrowserTest)でのリソースリークを修正しました(crrev.com/c/5009554バグ: 4614)。
  • リソース管理: ChromeDriver プロセスによって破棄されたブラウザ プロセスを検出して終了するロジックを ChromeDriver 統合テストに実装しました(crrev.com/c/5014093バグ: 4617)。
  • 起動: ブラウザ名が chrome-headless-shell の場合に、ブラウザのコマンドラインに data:, 引数を追加することで、chrome-headless-shell が空のターゲット リストを返し、セッションの作成を妨げる問題を修正しました(crrev.com/c/5010392crrev.com/c/5009535バグ: 4615バグ: 4358)。
  • FedCM: FedCM ダイアログが閉じられたときに通知する新しいイベントを追加しました。これにより、ダイアログが外部(AbortController.abort など)から閉じられた場合に、dialogtype などのコマンドが古いデータを返さないようにします(crrev.com/c/5067504バグ: 1506292)。
  • テスト: Windows の chrome-headless-shell で以前に無効になっていたすべての ChromeDriver 統合テストを修正して再度有効にしました(crrev.com/c/5027594バグ: 4358)。
  • テスト: testElementRegionTest の厳しすぎるアサーションを緩和して WebDriver 標準に合わせ、ブラウザのレンダリングの特殊性によって発生する不安定さを解消しました(crrev.com/c/5017865バグ: 4526)。

内部の変更とリファクタリング

  • BiDi: BiDi Mapper の依存関係を更新しました(crrev.com/c/4994305バグ: 4226)。
  • バグのため、IS_OZONE_{X11, WAYLAND} の使用を元に戻し、OZONE_PLATFORM_* を使用するようにしました(crrev.com/c/5086571crrev.com/c/5083096 を元に戻す、バグ: 1500494)。
  • commands_unittest.cc のコードを移行し、非推奨の base::Passed ではなく base::BindLambdaForTesting を使用するようにしました(crrev.com/c/5078589バグ: 1326449)。
  • session.new をリファクタリングして、ボイラープレート機能の処理(testNamebinarybrowserName など)を専用のメソッドに抽出し、コマンドが従来のコマンドと同様に機能を尊重するようにしました(crrev.com/c/5004665crrev.com/c/5001510バグ: 4358バグ: 4610)。
  • 非推奨になった base/strings/string_piece_forward.h ヘッダーの使用を削除しました(crrev.com/c/5008994バグ: 691162)。
  • 所有ケースに net::IOBufferWithSize を使用して、net::IOBuffer を非所有クラスに移行する準備をしました(crrev.com/c/4996470バグ: 1493389)。
  • 文字列にバイナリ値を保存しないように base::RandBytesAsVector() を導入して活用しました(crrev.com/c/5018451)。
  • LUCI 分析の免除によりビルドがグリーンになるのを防ぐため、Mac で一貫して失敗する Python 統合テストをいくつか無効にしました(crrev.com/c/4998771バグ: 1486604バグ: 1486520バグ: 1486474バグ: 1481915)。
  • webdriver_tests_suite(および wpt_tests_suite)の名前を chrome_wpt_tests に変更し、Linux トライ ビルダーの WPT スイートの命名規則を標準化しました(crrev.com/c/5014293バグ: 1474702)。
  • ConfirmIdpLogin FedCM ウェブドライバ コマンドを、DialogButton パラメータを受け入れるより拡張可能な ClickDialogButton コマンドに再利用しました(crrev.com/c/5003255バグ: 1499341)。
  • crossbench 依存関係を更新し、ドライバタイプの解析の改善、ネットワーク スタブ、iOS サポートなど、多数の修正と機能を追加しました(crrev.com/c/5009937)。
  • IWYU 準拠のため、chrome_finder.h に欠落していた #include <string> を追加しました(crrev.com/c/4994605バグ: 957519)。

ChromeDriver 120

新機能

  • BiDi: session.new コマンドと session.end コマンドのサポートを追加しました。これにより、ユーザーは BiDi コマンド(crrev.com/c/4941941バグ: 4496)を使用してセッションを直接作成および終了できるようになりました。
  • BiDi: session.status PureBiDi コマンドのサポートを追加しました。これにより、ユーザーはセッションにバインドされていない WebSocket 接続を確立し、セッション ステータスを取得できます(crrev.com/c/4938596バグ: 4496)。crrev.com/c/4922097 で以前にリバートされた後、再着地)
  • BiDi: BiDi Mapper の依存関係を更新し、新しい簡素化された Mapper 実行プロセス(crrev.com/c/4952609バグ: 4226)に合わせました。
  • センサー: browser_protocol.pdl と CDP レイヤ(エミュレーション ドメイン)に仮想センサー コマンドを実装し、汎用センサー仕様の自動化セクションのサポートを追加(crrev.com/c/4770864バグ: 1278377)。
  • センサー: 仮想センサー管理用の ChromeDriver 拡張機能コマンドを追加し、WebDriver パラメータを新しい CDP 呼び出しに変換しました(crrev.com/c/4770866バグ: 1278377)。
  • センサー: testdriver.js を介した仮想センサー操作用の content_shell コードパスを追加し、ウェブテストで ChromeDriver を完全にバイパスしました(crrev.com/c/4770865バグ: 1278377)。
  • トラッキング対策: バウンス トラッキング対策(DIPS)の ChromeDriver サポートを追加し、nav-tracking-mitigations 仕様の自動化を可能にしました(crrev.com/c/4873672バグ: 1474656)。(注: crrev.com/c/4938394 の Mac でのテストの失敗により、一時的に元に戻されました)

バグの修正

  • 起動: ChromeDriver に Headless Shell の検出機能を追加しました。これにより、機能経由でリクエストされ、明示的なパスが指定されていない場合、chrome-headless-shell バイナリを検索できるようになりました(crrev.com/c/4987262バグ: 4358)。crrev.com/c/4984449 で以前にリバートされた後、再着地)
  • WebSockets: WebSocket 終了ハンドシェイクの部分的なサポートを実装し、リモート エンドから受信したときに ChromeDriver が CLOSE フレームで応答するようにしました(crrev.com/c/4931500バグ: 4499)。
  • 権限: options.disclaim_responsibility をビルドフラグとして公開し、ベンダービルド(Microsoft Teams など)でオフにできるようにしました。これにより、macOS の権限プロンプトがテスト自動化を停止するのを防ぎます(crrev.com/c/4929495バグ: 1223643)。
  • C++ 標準への準拠: 範囲外の double を int にキャストする際に UBSan によって検出された未定義の動作(UB)を、範囲チェックを追加することで修正しました(crrev.com/c/4980055バグ: 1394755)。
  • FedCM: 古いヘッダー構文のサポートを削除し、標準の login-status-http 構文への準拠を確保しました(crrev.com/c/4957073バグ: 1381501)。

内部の変更とリファクタリング

  • window.frameElement を古い参照として扱う場合の ChromeDriver の動作を検証する testReturnFrameElement 統合テストを追加しました(crrev.com/c/4983549バグ: 4477)。
  • ChromeDriver がブラウザ バイナリの検索を試みる特定のパスをログに記録するようにして、ロギングを改善しました(crrev.com/c/4976116バグ: 4539)。
  • さまざまな base::Time 関数をより説明的な名前に変更しました(FromDoubleT()FromSecondsSinceUnixEpoch() に変更するなど)(crrev.com/c/4956111)。
  • 不要な文字列コピーと長さ 0 の割り当てを回避するため、net::StringIOBuffer コンストラクタと IOBuffer インスタンス化をリファクタリングしました(crrev.com/c/4938384crrev.com/c/4959174)。
  • 該当する箇所で base::StrCat+ に置き換え、base::AppendHexEncodedByte() を利用することで、文字列処理をクリーンアップしました(crrev.com/c/4963465crrev.com/c/4977165)。
  • わかりやすくするために、//chrome* テスト全体で DIR_SOURCE_ROOT の名前を DIR_SRC_TEST_DATA_ROOT に変更しました(crrev.com/c/4916045バグ: 1264897)。
  • Mac ビルダーで不安定な PureBidiTest テストを無効にしました(crrev.com/c/4983555バグ: 1496826)。

ChromeDriver 119

新機能

  • BiDi: リモート関数呼び出し中にリモート エンドから返された弱いローカル オブジェクト参照を解決するサポートを実装しました(crrev.com/c/4886760バグ: 4536)。
  • FedCM: IDP ログイン ステータス API オリジン トライアルをサポートするため、ベンダー プレフィックス付きの confirmidpsignin コマンドを追加しました(crrev.com/c/4811725バグ: 1451884)。

バグの修正

  • モバイル エミュレーション: Client Hints を含まない事前定義デバイス(古い構成など)が、適切なデフォルト値で入力されることで破損する問題を修正しました(crrev.com/c/4887254バグ: 4550)。
  • Classic: Map オブジェクトと Set オブジェクトのシリアル化を修正しました。length プロパティがないため、Collection ではなく Object として正しくシリアル化されるようになりました(crrev.com/c/4881378バグ: 4031)。
  • クラシック: テスト中に常に互換性のある最新バージョンの ChromeDriver をダウンロードして使用するロジックを復元しました。互換性の問題が発生した場合にのみ、特定のバージョンにフォールバックします(crrev.com/c/4779613crrev.com/c/4778973 を元に戻しました)。
  • FedCM: SigninLoginconfirmidplogin)に名前変更してブラウザ自動化コマンドを標準化し、最新の FedCM 仕様の議論(crrev.com/c/4901302バグ: 1451884)に合わせました。
  • テスト: テスト実行中に IDP ログイン ステータス API を明示的に有効にすることで、サードパーティ Cookie が無効になっている場合に失敗していた FedCM テストを修正しました(crrev.com/c/4889802バグ: 1484833)。
  • テスト: 今後の Chromium URL 標準の強制変更(crrev.com/c/4845589バグ: 1416013)に準拠するため、テストランナーで無効な URL プレースホルダ ~NOTFOUND^NOTFOUND に置き換えました。

内部の変更とリファクタリング

  • BiDi: BiDi Mapper の依存関係をバージョン 0.4.27 に更新し、最新の修正と機能を取り込みました(crrev.com/c/4862031crrev.com/c/4890322)。
  • //url の複数のポインタ/長さ API を std::string_view に置き換え、安全性と利便性を向上させました(crrev.com/c/4897456)。
  • generateWebDriverValue ユーティリティを、BiDi プロトコル(crrev.com/c/4889644)でネイティブに提供されるディープ シリアル化オプション(serializationOptions.serialization: deep)を使用するように移行しました。
  • 古い要素参照で検索すると「古い要素参照」エラーが正しく返されることを確認する統合テストを追加しました(crrev.com/c/4886793バグ: 4440)。
  • call_function.js のコードスタイルのフォーマットを改善しました(crrev.com/c/4882511バグ: 4031)。
  • WebSocket 経由で接続する際に、パイプがサポートされており、信頼性とセキュリティの向上のために推奨されることをユーザーに明示的に通知することで、ユーザー フィードバックを強化しました(crrev.com/c/4882626バグ: 3480)。
  • webdriver_tests_suite テストの results.html をアーカイブするように WPT スイートの構成を更新し、結果を表示するための UI を改善しました(crrev.com/c/4873223)。
  • WebView の WebContents をマークし、DevTools のタイプを other ではなく popup_page に設定することで、WebView と DevTools の統合を修正しました(crrev.com/c/4842093)。
  • 一貫性を保つため、WPT ビルド ターゲット chrome_wpt の名前を chrome_wpt_tests に変更し、冗長な webdriver_wpt_tests ターゲットを削除しました(crrev.com/c/4847474バグ: 1474702)。
  • 非推奨の optparse ライブラリから argparserun_py_tests.py を移行しました(crrev.com/c/4849411バグ: 4557)。

ChromeDriver 118

新機能

  • 統合テスト: ChromeDriver の C++ 統合テストを導入し、実際の CDP トラフィックに対して特定のクラスをテストできるようにしました。これにより、単体テストと Python 統合テストのギャップが埋められました(crrev.com/c/4707855バグ: 4528)。
  • Crossbench: crossbench 依存関係を更新し、新しい電力ベンチマーク ストーリー、プラットフォームとデバイスのサポートの改善、デバッグの強化、さまざまな修正など、多くの改善を行いました(crrev.com/c/4803743)。

バグの修正

  • 機能: デフォルト構成で返される機能に debuggerAddress が含まれていない問題を修正しました。これにより、Selenium の CDP ベースの BiDi 通信をサポートするために、debuggerAddress が正しく返されるようになりました(crrev.com/c/4789068バグ: 4533)。
  • 機能: WebDriver 仕様(crrev.com/c/4797735バグ: 4548)で求められているとおり、ChromeDriver が標準の platformName 値(「linux」、「windows」、「mac」など)を返すようにしました。

内部の変更とリファクタリング

  • MockSocket の移行済みコードで、安全性を高めるために未加工のポインタよりも base::span<> を優先するようにしました(crrev.com/c/4832086)。
  • 自動クリーンアップにより、非推奨の base::raw_ptrbase::raw_ref の使用を削除し、限定されていない形式の raw_ptrraw_ref に置き換えました(crrev.com/c/4773481)。
  • Windows の安定版/ベータ版チャンネルでクラッシュが発生したため、常に最新の ChromeDriver を使用する変更を一時的に元に戻しました(crrev.com/c/4778973crrev.com/c/4777430 を元に戻しました)。
  • pointer_touch.py でデバッグ専用の失敗を抑制する、フェンス付きフレームのブラウザ側のフォーカス検証を実装するなど、WPT(ウェブ プラットフォーム テスト)の構成を調整しました(crrev.com/c/4844810crrev.com/c/4572517)。
  • IWYU 準拠のため、欠落していた #include <vector>client_hints.h に追加しました(crrev.com/c/4767547)。
  • Apple 固有の基本型(ScopedTypeRefScopedCFTypeRefscoped_nsautorelease_pool)を base::apple:: 名前空間に移行し、Crashpad 用の一時的な転送ヘッダーを残しました(crrev.com/c/4799213crrev.com/c/4790744crrev.com/c/4790741crrev.com/c/4784010)。

ChromeDriver 117

新機能

バグの修正

  • 安定性: ChromeDriver のクラッシュを引き起こし、テスト実行中に ConnectionRefused エラーが発生する原因となっていた null ポインタ アクセスを修正しました(crrev.com/c/4675633バグ: 1457101)。
  • ナビゲーション: ナビゲーション中の Chrome の NoSuchExecutionContext エラーと NoSuchWindow エラーが統一的に処理されない問題を修正しました。どちらも、オペレーションを再試行するために適切にマッピングされるようになりました(crrev.com/c/4667156バグ: 4459)。
  • モバイル エミュレーション: clientHints.mobile の推論ロジックを修正しました。Android の userAgent から正しく推論されるようになり、他のプラットフォームではデフォルトで false になります。これにより、タブレットがモバイルとして誤って報告される問題が修正されました(crrev.com/c/4649348バグ: 4243)。
  • セッションの作成: セッションの作成を更新し、失敗時に標準の SessionNotCreated エラーコードを正しく返すようにしました。これにより、W3C WebDriver 仕様(crrev.com/c/4638223バグ: 4379)に厳密に準拠します。注: この変更は、特定のコードパスで異なるエラーコードが必要なため、その後元に戻されました(crrev.com/c/4651188)。

内部の変更とリファクタリング

  • ChromeDriver が Chrome リリース プロセスに完全に統合され、Chrome for Testing インフラストラクチャ(crrev.com/c/4520687バグ: 4142)から利用できるようになったため、ChromeDriver の手動リリース プロセス スクリプトを削除しました。
  • WPT(ウェブ プラットフォーム テスト)インフラストラクチャを移行し、専用の run_webdriver_tests.py ではなく公式の wptrunner ハーネスを使用するようにしました。これにより、実行速度と信頼性が大幅に向上し、テスト間で ChromeDriver が再生成されてクラッシュが分離されるようになりました(crrev.com/c/4723147crrev.com/c/4676070crrev.com/c/4639168)。
  • パイプへの移行をサポートするため、ChromeLauncher と関連クラスを大幅にリファクタリングし、DevToolsHttpClient との結合を緩め、WebSocket ロジックを専用ブランチに移動しました(crrev.com/c/4632801crrev.com/c/4674345)。
  • 誤解を招く BrowserInfo.is_headless フィールドの名前を BrowserInfo.is_headless_shell に変更しました(明確にするために記すと、crrev.com/c/4650452バグ: 4358)。
  • コードベース全体で、非推奨になったさまざまな base::Value メソッドを最新の base::Value::Dict 相当(FindDouble()Set()size() など)に置き換えました(crrev.com/c/4258936crrev.com/c/4336805crrev.com/c/4461067)。112.0.5603.0、113.0.5653.0、114.0.5733.0
  • より安全なベース文字列ユーティリティを優先して [w]ctype.h の使用を削除し、base::expected の新しい機能(crrev.com/c/4749459crrev.com/c/4755226)を実装しました。
  • FedCM WPT 用に TestDriverget_fedcm_dialog_titleselect_fedcm_account の自動化コマンドを実装しました(crrev.com/c/4618303)。
  • 現在の作業ディレクトリに関係なく正しく機能するように、BiDi マッパーのビルド スクリプトを更新しました(crrev.com/c/4670550)。
  • macOS ビルドで ARC(自動参照カウント)を使用するために /chrome/test/chromedriver ファイルを変換し、必要なボイラープレートを追加しました(crrev.com/c/4663602)。
  • 自動化されたゴム印コミットにより、デフォルトでパイプ通信を無効にしようとしましたが、変更は構成にのみ影響し、以前に導入されたデフォルトのコアパイプの動作(crrev.com/c/4683947)は変更されませんでした。

ChromeDriver 116

新機能

  • FedCM: クライアントが FedCM コマンドを実行せずに ChromeDriver が FedCM コマンドをサポートしているかどうかを確認し、エラーをキャッチできる新しい機能を追加しました(crrev.com/c/4624924バグ: 1356159)。
  • テスト: wptrunner で ChromeDriver を介して実行される testharness テストでテスト ウィンドウの再利用を有効にし、パフォーマンスと不安定さへの影響を評価しました(crrev.com/c/4515180バグ: 1394572)。

バグの修正

  • C++ 標準への準拠: 形式文字列でスコープ付き列挙型(enum class)を直接使用したことが原因で発生する未定義の動作を修正し、新しい Clang コンパイラの警告(crrev.com/c/4628112バグ: 1456289)に対応しました。
  • FedCM: setdelayenabled が正しく動作しないエッジケースを修正し(crrev.com/c/4606064バグ: 1453412)、テストの不安定さの原因となる可能性に対処しました。

内部の変更とリファクタリング

  • BiDi: BiDi Mapper の依存関係を更新し、ビルド スクリプトを更新して、デフォルトで「main」から最新のリビジョンを取得するようにしました(crrev.com/c/4615087crrev.com/c/4615791バグ: 4226)。
  • ChromeDriver が、すべてのファイルを開いて書き込む際に UTF-8 エンコードを明示的に使用するように移行しました(crrev.com/c/4614522)。
  • ChromeImpl をリファクタリングして DevToolsHttpClient への依存関係を解消し、WebSocket ではなくパイプ経由で通信するための準備として SyncWebSocketFactoryBrowserInfo の使用を削減しました(crrev.com/c/4571690crrev.com/c/4571199バグ: 3480)。
  • フェンス付きフレームの非推奨の「デフォルト モード」を削除し、関連するテストを更新して新しいフィーチャー トグルを有効にしました。これにより、FLEDGE オークションへの移行が継続されます(crrev.com/c/4558645)。
  • 汎用の WaitForCondition アサーションを assertTrue に置き換えて、タイムアウトが発生するタイミングを明確に示し、FedCM テストを改善しました(crrev.com/c/4590211)。
  • linux-rel 単体テストで既知の不安定なぶら下がり raw_ptr 警告をマークしました(crrev.com/c/4598070)。
  • BiDi マッパーの OWNERS ファイルを更新しました(crrev.com/c/4614518)。

ChromeDriver 115

新機能

  • モバイル エミュレーション: モバイル エミュレーションで User-Agent Client Hints のサポートを実装し、ChromeDriver がケーパビリティとプリセットからクライアント ヒントを解析して Chrome に渡せるようにしました(crrev.com/c/4498667crrev.com/c/4466129バグ: 4243)。
  • モバイル エミュレーション: ユーザー エージェントの %s 形式文字列を置き換える際に、ChromeDriver バージョンではなくホストブラウザのメジャー バージョンを使用するようにモバイル エミュレーションのプリセットを更新しました(crrev.com/c/4502850バグ: 4243)。
  • セットアップ: 特定のチャンネルの特定の ChromeDriver バージョンをダウンロードするサポートを追加し、ChromeDriver がホスト(crrev.com/c/4550281)とは異なるプラットフォーム(Android/WebView など)で実行される自動化シナリオを改善しました。116.0.5791.0

バグの修正

  • Classic: ノードの解決に失敗した場合に、標準の NoSuchElement エラーではなく誤って UnknownError が返される問題を修正しました(crrev.com/c/4508952バグ: 4440)。
  • モバイル エミュレーション: モバイル エミュレーションのプリセットに、userAgent 文字列に「Mobile」が含まれている場合、clientHints.mobile フラグが true でなければならないことを強制する、より厳格なアサーションを追加しました(crrev.com/c/4507142バグ: 4243)。
  • モバイル エミュレーション: 非推奨の Page ドメインの同等物(crrev.com/c/4502614バグ: 4243)の代わりに Emulation.setDeviceMetricsOverride CDP コマンドを使用するように DeviceMetrics オーバーライドを移行しました。

内部の変更とリファクタリング

  • BiDi: BiDi Mapper の依存関係を更新し、ディープ シリアル化機能を有効にしました(crrev.com/c/4535936crrev.com/c/4512195)。
  • ChromeDriver をパイプ経由で通信するように移行する準備として、非推奨の Connect メソッドを DevToolsClient から削除しました(crrev.com/c/4521485バグ: 3480)。
  • コードベースを移行して base::Value よりも base::Value::Dict を優先し、非推奨のメソッド(FindStringKey()SetKey()SetByDottedPath() など)を置き換えました(crrev.com/c/4529788crrev.com/c/4522701crrev.com/c/4515800crrev.com/c/4507150)。
  • より安全な型変換のため、[w]ctype.h の代わりに string_util.h 関数を使用するように切り替えました(crrev.com/c/4529187)。
  • スクリプトと Chrome が異なる場所で実行される際の整合性を確保するため、シードファイルの読み込みロジックを絶対パスを使用するように変更しました(crrev.com/c/4504656)。
  • web_view.h から未使用の CallAsyncFunction() メソッドを削除しました(crrev.com/c/4518363バグ: 3376)。
  • スタイルガイドの推奨事項に沿って、base::raw_ptrraw_ptr に自動的に名前変更しました(crrev.com/c/4476651)。

ChromeDriver 114

新機能

  • Classic: MobileDevice 情報を MobileEmulationOverrideManager に渡し、今後の Client Hints と UserAgent のオーバーライドの基盤を構築しました(crrev.com/c/4447524)。
  • テスト: ChromeDriver のテスト フィクスチャを追加しました(crrev.com/c/4459939)。

バグの修正

  • ヘッドレス: スクリプトによる印刷プレビュー リクエスト(window.print() など)を無視することで、新しいヘッドレス モードのクラッシュを修正し、古いヘッドレス モードと動作を一致させました(crrev.com/c/4436313バグ: 4385)。
  • 機能: ChromeDriver の機能における移動後の使用に関するバグを修正しました(crrev.com/c/4462094バグ: 4243)。
  • DevTools: DevTools 接続が切断されたときにクラッシュしないように、DevToolsClientImpl::SendCommandInternalDCHECK を削除しました。これは不変条件の違反ではないためです(crrev.com/c/4370486バグ: 4385)。

内部の変更とリファクタリング

  • BiDi: BiDi Mapper の依存関係を更新しました(crrev.com/c/4418727)。
  • WebViewImpl とパフォーマンス Logger のテストで、所有されていない参照とローカルの破棄を適切に管理することで、単体テストのテスト実行中に複数のダングリング ポインタの警告に対処しました(crrev.com/c/4374824crrev.com/c/4368179)。
  • コードベースを移行して新しい base::Value v2 API を使用し、非推奨のメソッド(Value::SetPath()Value::SetStringPath()base::ListValue など)を置き換えました(crrev.com/c/4452309crrev.com/c/4431420crrev.com/c/4422897crrev.com/c/4377520)。
  • コアベース ライブラリの名前変更(crrev.com/c/4455083)に合わせて、base::GUID の使用箇所をすべて base::Uuid に置き換えました。
  • コードの短縮、expected のモナド演算子の使用、デッドコードの削除、スタイルの違反の修正など、コードのクリーンアップを各種実施しました(crrev.com/c/4475368crrev.com/c/4464199)。
  • フェンス付きフレームを含むテストを更新し、非推奨の src 属性ではなく config 属性を使用するようにしました(crrev.com/c/4382231)。
  • 効果のない ShadowDOMV0 の使用を削除しました(crrev.com/c/4388302)。
  • 再ベースライン設定を可能にするため、Skia PDF の修正のフラグの追加(SK_IGNORE_PDF_EOF_NEWLINE_FIX)を元に戻しました(crrev.com/c/4401451)。
  • ChromeDriver テスト スクリプトのオーナーを更新し、ピンポイント専用の構成 JSON を生成するように調整しました(crrev.com/c/4437492crrev.com/c/4298554)。
  • web_view_impl.ccstd::strlen に欠落していたインクルード(<cstring>)を追加し、IWYU ビルドの問題を修正しました(crrev.com/c/4376772)。
  • 未使用のテストファイル(orientation_test.html)を削除しました(crrev.com/c/4335668)。

ChromeDriver 113.0.5672.63

Chrome バージョン 113 をサポート

  • 問題 4205 を解決: Classic と BiDi で同じオブジェクト ID が使用されている [Pri-1]
  • 問題 4302 を解決しました。ExecuteGetWindowHandles の最初のタブに Mapper があることを前提としない [Pri-1]
  • 問題 4356 を解決しました: Chrome 110 で設定値「download.default_directory」が使用されない [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 113.0.5672.24

Chrome バージョン 113 をサポート

  • 問題 4205 を解決: Classic と BiDi で同じオブジェクト ID が使用されている [Pri-1]
  • 問題 4302 を解決しました。ExecuteGetWindowHandles の最初のタブに Mapper があることを前提としない [Pri-1]
  • 問題 4356 を解決しました: Chrome 110 で設定値「download.default_directory」が使用されない [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 112.0.5615.49

Chrome バージョン 112 をサポート

  • 問題 3517 を解決: ヘッドレスでない場合の印刷機能を有効化 [Pri-]
  • 問題 4419 を解決: chromedriver を使用すると Speedometer のオーバーヘッドが大きくなる [Pri-3]

詳細については、リリースノートをご覧ください。

ChromeDriver 112.0.5615.28

Chrome バージョン 112 をサポート

  • 問題 4357 を解決しました。Chromedriver バージョン 110.0.5481.77 で --headless オプションと --user-data-dir オプションを指定するとセッションの問題が発生する。[Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 111.0.5563.64

Chrome バージョン 111 をサポート

  • 問題 4216 を解決: カスタム BiDiMapper で ChromeDriver を実行 [Pri-]
  • 問題 4300: ウィンドウ ハンドルが従来版と BiDi の間で相互運用可能である問題を解決しました [Pri-]
  • 問題 4325 を解決しました。call_function.js の jsonSerialize での toJSON の処理が標準から逸脱しています。[Pri-]
  • 問題 4330 を解決: DevToolsClientImpl::AddListener で DCHECK が失敗する [Pri-]
  • 解決済みの問題 4357: --headless オプションと --user-data-dir オプションを使用した場合の ChromeDriver セッションの問題 [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 111.0.5563.41

Chrome バージョン 111 をサポート

  • 解決済みの問題 4357: --headless オプションと --user-data-dir オプションを使用した場合の ChromeDriver セッションの問題 [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 111.0.5563.19

Chrome バージョン 111 をサポート

  • 問題 4216 を解決: カスタム BiDiMapper で ChromeDriver を実行 [Pri-]
  • 問題 4300: ウィンドウ ハンドルが従来版と BiDi の間で相互運用可能である問題を解決しました [Pri-]
  • 問題 4325 を解決しました。call_function.js の jsonSerialize での toJSON の処理が標準から逸脱しています。[Pri-]
  • 問題 4330 を解決: DevToolsClientImpl::AddListener で DCHECK が失敗する [Pri-]

詳細については、リリースノートをご覧ください。

ChromeDriver 110.0.5481.77

Chrome バージョン 110 をサポート

  • 問題 4193: Android 13 で新しいセッションを開始できない問題を解決しました [Pri-]
  • 問題 4272 を解決しました。WebSocket で code=0 を FIN の指示として扱うようにしました [Pri-]
  • 解決済みの問題 4276: ChromeDriver の接続に関する問題を修正 [Pri-]
  • 問題 4295: "webSocketUrl": true を使用する ChromeDriver が競合状態にある [Pri-] を解決
  • 問題 4297: ChromeDriver Bidi が正しくシリアル化されない [Pri-] を解決

詳細については、リリースノートをご覧ください。

ChromeDriver 110.0.5481.30

Chrome バージョン 110 をサポート

  • 問題 4193: Android 13 で新しいセッションを開始できない問題を解決しました [Pri-]
  • 問題 4272 を解決しました。WebSocket で code=0 を FIN の指示として扱うようにしました [Pri-]
  • 解決済みの問題 4276: ChromeDriver の接続に関する問題を修正 [Pri-]
  • 問題 4295: "webSocketUrl": true を使用する ChromeDriver が競合状態にある [Pri-] を解決
  • 問題 4297: ChromeDriver Bidi が正しくシリアル化されない [Pri-] を解決

詳細については、リリースノートをご覧ください。

ChromeDriver 109.0.5414.74

Chrome バージョン 109 をサポート

  • 問題 4179 を解決: BiDi セッションで複数の接続をサポートする必要がある [Pri-]
  • 解決済みの問題 4203: クレジット情報を改善 [Pri-]
  • 問題 4263: Meta+A でクラッシュする [Pri-] を解決しました

詳細については、リリースノートをご覧ください。

ChromeDriver 109.0.5414.25

Chrome バージョン 109 をサポート

  • 問題 4179 を解決: BiDi セッションで複数の接続をサポートする必要がある [Pri-]
  • 解決済みの問題 4203: クレジット情報を改善 [Pri-]
  • 問題 4263: Meta+A でクラッシュする [Pri-] を解決しました

詳細については、リリースノートをご覧ください。

ChromeDriver 108.0.5359.71

Chrome バージョン 108 をサポート 詳しくは、リリースノートをご覧ください。

ChromeDriver 108.0.5359.22

Chrome バージョン 108 をサポート

  • 問題 4204 を解決: 失敗する WPT test_top_level_and_one_child を修正 [Pri-]
  • 解決済みの問題 4215: chromedriver_mac64_m1 ビルドの名前を chromedriver_mac_arm64 に変更 [Pri-]
  • 問題 4221 を解決しました: クリック コマンドでブラウザを閉じるとクラッシュする [Pri-]

詳細については、リリースノートをご覧ください。

ChromeDriver 107.0.5304.62

Chrome バージョン 107 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 107.0.5304.18

Chrome バージョン 107 をサポート

  • 問題 4180 を解決: BiDiMapper が開始したことが通知されるまで、BiDi コマンドの処理を禁止 [Pri-]
  • 問題 4198 を解決しました: ChromeDriver BiDi は BiDiMapper が常に最初のタブにあると想定すべきではありません [Pri-]
  • 問題 4207 を解決: WPT の実行時に WebDriver エラーが発生する [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 106.0.5249.61

Chrome バージョン 106 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 106.0.5249.21

Chrome バージョン 106 をサポート

  • 解決済みの問題 4016: ChromeDriver に基本的な BiDi サポートを追加(Mapper ベース)[Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 105.0.5195.52

Chrome バージョン 105 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 105.0.5195.19

サポートされている Chrome バージョン

詳細については、リリースノートをご覧ください。

ChromeDriver 104.0.5112.79

Chrome バージョン 104 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 104.0.5112.29

Chrome バージョン 104 をサポート

  • 問題 4121 を解決しました: WebDriver コマンドが「予期しないコマンド レスポンス」で失敗することがある [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 104.0.5112.20

Chrome バージョン 104 をサポート

  • 問題 4121 を解決しました: WebDriver コマンドが「予期しないコマンド レスポンス」で失敗することがある [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 103.0.5060.134

Chrome バージョン 103 をサポート

  • 問題 4048: ターゲット フレームが切り離される [Pri-] を解決
  • 問題 4121 を解決しました: WebDriver コマンドが「予期しないコマンド レスポンス」で失敗することがある [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 103.0.5060.53

Chrome バージョン 103 をサポート

  • 問題 4048: ターゲット フレームが切り離される [Pri-] を解決

詳細については、リリースノートをご覧ください。

ChromeDriver 103.0.5060.24

Chrome バージョン 103 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 102.0.5005.61

Chrome バージョン 102 をサポート

  • 問題 1309282 を解決: chromedriver が複数値スイッチをサポートしていない [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 102.0.5005.27

Chrome バージョン 102 をサポート

  • 問題 1309282 を解決: chromedriver が複数値スイッチをサポートしていない [Pri-1]

詳細については、リリースノートをご覧ください。

ChromeDriver 101.0.4951.41

Chrome バージョン 101 をサポート

  • 問題 4046: 空のフェンス付きフレームを追加すると DCHECK が発生する [Pri-] を解決しました
  • 問題 4080 を解決: ネストされたフレームへの切り替えが失敗する [Pri-]

詳細については、リリースノートをご覧ください。

ChromeDriver 101.0.4951.15

Chrome バージョン 101 をサポート

  • 問題 4046: 空のフェンス付きフレームを追加すると DCHECK が発生する [Pri-] を解決しました
  • 問題 4080 を解決: ネストされたフレームへの切り替えが失敗する [Pri-]

詳細については、リリースノートをご覧ください。

ChromeDriver 100.0.4896.60

Chrome バージョン 100 をサポート

  • 問題 4002 を解決: フェンス付きフレームをサポート [Pri-]

詳細については、リリースノートをご覧ください。

ChromeDriver 100.0.4896.20

Chrome バージョン 100 をサポート

  • 問題 4002 を解決: フェンス付きフレームをサポート [Pri-]

詳細については、リリースノートをご覧ください。

ChromeDriver 99.0.4844.51

Chrome バージョン 99 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 99.0.4844.35

Chrome バージョン 99 をサポート

  • REVERTED!!! 問題 2269: BMP 以外の文字(U+FFFF より上のコードポイント)を使用できない問題を解決 [Pri-3]
  • 問題 chromium:1295243: ChromeDriver sendKeys の回帰 [Pri-1] を解決

詳細については、リリースノートをご覧ください。

ChromeDriver 99.0.4844.17

Chrome バージョン 99 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 98.0.4758.102

Chrome バージョン 98 をサポート

  • 問題 3933 を解決: ビューポートの端をクリックしてもエラーが発生せず、無効になる [Pri-]
  • REVERTED!!! 問題 2269: BMP 以外の文字(U+FFFF より上のコードポイント)を使用できない問題を解決 [Pri-3]
  • 問題 chromium:1295243: ChromeDriver sendKeys の回帰 [Pri-1] を解決

詳細については、リリースノートをご覧ください。

ChromeDriver 98.0.4758.80

Chrome バージョン 98 をサポート

  • 問題 3933 を解決: ビューポートの端をクリックしてもエラーが発生せず、無効になる [Pri-]
  • 問題 2269: BMP 以外の文字(U+FFFF より上のコードポイント)を使用できない問題を解決 [Pri-3]

詳細については、リリースノートをご覧ください。

ChromeDriver 98.0.4758.48

Chrome バージョン 98 をサポート

  • 問題 3933 を解決: ビューポートの端をクリックしてもエラーが発生せず、無効になる [Pri-]
  • 問題 2269: BMP 以外の文字(U+FFFF より上のコードポイント)を使用できない問題を解決 [Pri-3]

詳細については、リリースノートをご覧ください。

ChromeDriver 97.0.4692.71

Chrome バージョン 97 をサポート

  • 問題 3878 を解決: 要素クリックの要素座標の小数部分の処理を改善 [Pri-]

詳細については、リリースノートをご覧ください。

ChromeDriver 97.0.4692.36

Chrome バージョン 97 をサポート

  • 問題 3878 を解決: 要素クリックの要素座標の小数部分の処理を改善 [Pri-]

詳細については、リリースノートをご覧ください。

ChromeDriver 97.0.4692.20

Chrome バージョン 97 をサポート

  • 問題 3878 を解決: 要素クリックの要素座標の小数部分の処理を改善 [Pri-]

詳細については、リリースノートをご覧ください。

ChromeDriver 96.0.4664.45

Chrome バージョン 96 をサポート

  • 問題 3445 を解決しました: シャドウルート内の iframe の要素にアクセスできない [Pri-3]

詳細については、リリースノートをご覧ください。

ChromeDriver 96.0.4664.35

Chrome バージョン 96 をサポート

  • 問題 3445 を解決しました: シャドウルート内の iframe の要素にアクセスできない [Pri-3]

詳細については、リリースノートをご覧ください。

ChromeDriver 96.0.4664.18

Chrome バージョン 96 をサポート

  • 問題 3445 を解決しました: シャドウルート内の iframe の要素にアクセスできない [Pri-3]

詳細については、リリースノートをご覧ください。

ChromeDriver 95.0.4638.69

Chrome バージョン 95 をサポート

  • 問題 3857 を解決: ホスト ヘッダーまたはオリジン ヘッダーが指定されているが、ホワイトリストに登録されていないか、localhost ではない [Pri-1]
  • --allowed-origins 引数を追加

詳細については、リリースノートをご覧ください。

ChromeDriver 95.0.4638.54

Chrome バージョン 95 をサポート

  • 問題 3857 を解決: ホスト ヘッダーまたはオリジン ヘッダーが指定されているが、ホワイトリストに登録されていないか、localhost ではない [Pri-1]
  • --allowed-origins 引数を追加

詳細については、リリースノートをご覧ください。

ChromeDriver 95.0.4638.17

Chrome バージョン 95 をサポート

  • 問題 3857 を解決: ホスト ヘッダーまたはオリジン ヘッダーが指定されているが、ホワイトリストに登録されていないか、localhost ではない [Pri-1]
  • --allowed-origins 引数を追加

詳細については、リリースノートをご覧ください。

ChromeDriver 95.0.4638.10

Chrome バージョン 95 をサポート

  • 問題 3857 を解決: ホスト ヘッダーまたはオリジン ヘッダーが指定されているが、ホワイトリストに登録されていないか、localhost ではない [Pri-1]
  • --allowed-origins 引数を追加

詳細については、リリースノートをご覧ください。

ChromeDriver 94.0.4606.113

Chrome バージョン 94 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 94.0.4606.61

Chrome バージョン 94 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 94.0.4606.41

Chrome バージョン 94 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 93.0.4577.63

Chrome バージョン 93 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 93.0.4577.15

Chrome バージョン 93 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 92.0.4515.107

Chrome バージョン 92 をサポート

詳細については、リリースノートをご覧ください。

ChromeDriver 92.0.4515.43

Chrome バージョン 92 をサポート

  • 問題 3389 を解決: ChromeDriver リクエストのホスト検証

詳細については、リリースノートをご覧ください。

ChromeDriver 91.0.4472.101

Chrome バージョン 91 をサポート

  • 問題 1205107 を解決しました。ウェブ アプリケーションのフィールドの属性値を取得できない。

詳細については、リリースノートをご覧ください。

ChromeDriver 91.0.4472.19

Chrome バージョン 91 をサポート

  • 問題 3744 を解決: リンク ナビゲーション後に SendKeys() と Click() がサイレントに失敗する
  • 問題 3746: 属性エンドポイントが値を誤って更新する問題を解決しました

詳細については、リリースノートをご覧ください。

ChromeDriver 90.0.4430.24

Chrome バージョン 90 をサポート

  • 問題 3708: Shadow DOM 内の要素に対して GetElementLocation の inView が失敗する問題を解決
  • 問題 3721 を解決: Service Worker が有効な場合にパフォーマンス ログを収集
  • 問題 3731 を解決: OnePlus などの標準以外の Android OS で AdbImpl::GetPidByName が正しく動作しない
  • 問題 3733 を解決: localhost のドメインで致命的な障害が発生する
  • 問題 3734 を解決: ドライバが間違ったドメインで Cookie を設定しようとするとエラーが発生する
  • 問題 3743 を解決: 呼び出し関数をリファクタリングし、要素削除の問題を修正

詳細については、リリースノートをご覧ください。

ChromeDriver 89.0.4389.23

Chrome バージョン 89 をサポート

  • 解決済みの問題 3667: レンダラからのメッセージの受信がタイムアウトした
  • 問題 3675 を解決: GetElementLocation が inView メソッドを使用し、ブール値を配列として誤って処理する
  • 問題 3682 を解決しました。GetElementRegion が、ビューポートの一部から外れている要素に対して誤ったサイズを返す
  • 問題 3690 を解決: 拡張機能で chrome.windows API を使用している場合、ChromeDriver が失敗する

詳細については、リリースノートをご覧ください。

ChromeDriver 88.0.4324.96

Chrome バージョン 88 をサポート

  • 問題 3641 を解決: Chrome Beta v87 と chromedriver v(87/86) でブラウザ ウィンドウが目的のコンテンツとして表示されていない場合にページが読み込まれない/レンダリングされない

詳細については、リリースノートをご覧ください。

ChromeDriver 88.0.4324.27

Chrome バージョン 88 をサポート

  • 問題 3611: protractor の getText() 出力が <element>.innerText と異なる問題を解決
  • 問題 3625 を解決: 要素のスクリーンショットの互換性を改善
  • 問題 3628 を解決: URL のパスに別の URL が含まれている場合に、古い要素参照と誤った URL が返される
  • 問題 3631 を解決: webauthn:extension:largeBlob 機能のサポートを追加
  • 問題 3635 を解決: Chromedriver 86 - chromedriver.quit() が unload イベントを適切に渡さない
  • 問題 3649 を解決しました。ヘッドレス モードを使用している場合、Windows 10 で選択したテキストをクリップボードにコピーできない

詳細については、リリースノートをご覧ください。

ChromeDriver 87.0.4280.88

Chrome バージョン 87 をサポート

  • 問題 3641 を解決: Chrome Beta v87 と chromedriver v(87/86) でブラウザ ウィンドウが目的のコンテンツとして表示されていない場合にページが読み込まれない/レンダリングされない
  • 問題 3657: スクリーンショットのバックグラウンド ブラウザがタイムアウトする問題を解決

詳細については、リリースノートをご覧ください。

ChromeDriver 87.0.4280.20

Chrome バージョン 87 をサポート

  • 問題 2421 を解決: Android adb-server で古いポート転送チャネルを削除
  • 問題 3474 を解決: エミュレートされたモバイル デバイスのリストを更新する必要がある
  • 問題 3507 を解決: 「計算されたロールを取得」を実装
  • 問題 3508: 「計算されたラベルを取得」を実装
  • 問題 3584 を解決しました: ChromeDriver コマンドライン オプション --whitelisted-ips の名前を変更
  • 問題 3588: 双方向 WebSocket 接続を解決
  • 問題 3594 を解決: メインページより先に OOPIF が読み込まれると、ナビゲーションが途中で完了する
  • 問題 3598 を解決: devtools ポートを webview_devtools_remote ソケットに転送するコマンドライン オプション
  • 問題 3608: Chromedriver の debuggerAddress が ipv6 をサポートしていない問題を解決

詳細については、リリースノートをご覧ください。

ChromeDriver 86.0.4240.22

Chrome バージョン 86 をサポート

  • 問題 3370 を解決: Chrome を正常にシャットダウンしないと、Cookie が SQLite 永続ファイルに正しく保存されない
  • 問題 3401 を解決: Get Element Location JS が要素の表示されている中心を特定しない
  • 問題 3462 を解決しました: sendKeys で、MAC で CMD キーが機能しない
  • 問題 3541 を解決: クライアントと ChromeDriver 間のログを改善
  • 問題 3559 を解決: ChromeDriver が互換性がないと報告したときに Chrome のバージョンを出力

詳細については、リリースノートをご覧ください。

ChromeDriver 85.0.4183.87

Chrome バージョン 85 をサポート

  • 問題 3578 を解決: Chrome 85 では、アラート ダイアログが開いているときにウィンドウを操作できなくなった

詳細については、リリースノートをご覧ください。

ChromeDriver 85.0.4183.83

Chrome バージョン 85 をサポート

  • 問題 3577 を解決: ChromeDriver 85 で変更された Chrome ディレクトリ(C:\Program Files)が検出されない

詳細については、リリースノートをご覧ください。

ChromeDriver 85.0.4183.38

Chrome バージョン 85 をサポート

  • 問題 3214 を解決しました: ChromeDriver78: sendKeys が contenteditable でテキスト選択をリセットする
  • 問題 3376 を解決: ChromeDriver から LaunchApp コマンドを削除
  • 問題 3432 を解決しました: ページが読み込みを完了したときに NavigationTracker が検出に失敗することがある
  • 問題 3481 を解決: w3c 仕様に準拠した新しい印刷エンドポイント
  • 問題 3488 を解決しました: プロキシが正しく構成されていない場合、driver.get がエラーをスローしない
  • 問題 3502 を解決: document.hasFocus() を使用して要素がフォーカスされているかどうかを確認
  • 問題 3515 を解決: selenium.common.exceptions.WebDriverException: メッセージ: 不明なエラー: 不正なインスペクタ メッセージ

詳細については、リリースノートをご覧ください。

ChromeDriver 84.0.4147.30

Chrome バージョン 84 をサポート

  • 問題 3420 を解決: 印刷ウィンドウに切り替えた後、chromedriver が応答しなくなる
  • 問題 3421: ドライバがスタイルなしのキリル文字テキストを返す問題を解決
  • 問題 3422: GetElementText がプロトタイプ 1.6.0.3 で動作しない問題を解決しました
  • 問題 3434 を解決: 「ブラウザ」ログから「assert」メッセージを取得できない

詳細については、リリースノートをご覧ください。

ChromeDriver 83.0.4103.39

Chrome バージョン 83 をサポート

  • prototype.js で正しく動作するように Chromedriver を更新しました。

詳細については、リリースノートをご覧ください。

ChromeDriver 83.0.4103.14

Chrome バージョン 83 をサポート

  • 問題 1778 を解決: ChromeDriver から launchApp を非推奨に
  • 問題 2520 を解決: Chrome が応答しない場合、InitSession が永久に待機する
  • 解決済みの問題 3120: 新しいタブからのヘッドレス モードのダウンロード
  • 問題 3234 を解決: 部分文字列の前にセミコロンがあることを確認
  • 問題 3240 を解決: ExecuteGetElementRect が GET_SIZE から返されたステータスをチェックしない
  • 問題 3331 を解決しました。get_cookies() メソッドが double 型の「expiry」キーを返していますが、w3c モードでは int64 であるべきです
  • 解決済みの問題 3332: 再試行タイムアウトが重大としてログに記録される
  • 問題 3339 を解決: Chromedriver が予期せず終了し、コード null、シグナル SIGTRAP が返される
  • 問題 3351 を解決: セキュリティに関する考慮事項のメッセージを改善
  • 問題 3352 を解決: 色要素の SendKeys をサポート
  • 解決済みの問題 3353: フレーム コンテキストが破棄された後も保留中のナビゲーションの待機が継続される
  • 解決済みの問題 3375: 一部のサイトで Chromedriver v80 が getPageSource で停止する
  • 問題 3383 を解決: Windows の ChromeDriver 80+ が特定の要素またはクリック コマンドで終了または停止する
  • 問題 3399 を解決: wasThrown チェックを削除

ChromeDriver 81.0.4044.138

Chrome バージョン 81 をサポート

  • prototype.js で正しく動作するように Chromedriver を更新しました。

詳細については、リリースノートをご覧ください。

ChromeDriver 81.0.4044.69

Chrome バージョン 81 をサポート

  • 修正: 一部のサイトで getPageSource で Chromedriver がクラッシュする問題を修正しました。
    • 修正: 特定の要素またはクリック コマンドで ChromeDriver がクラッシュする問題を修正しました。

詳細については、リリースノートをご覧ください。

ChromeDriver 81.0.4044.20

Chrome バージョン 81 をサポート

  • HTML 要素の位置を取得しようとした際のエラーを修正しました。
    • Get Cookie コマンドと Add Cookie コマンドがフレーム固有になりました。
    • 標準の JavaScript オブジェクトを再定義するサイトで発生する問題を解決しました。
    • ChromeDriver は、Target Closed メッセージを受信した後も、読み込みが完了するまで待機し続けます。
    • Chromedriver がタイムアウトに対して仕様に準拠したエラーコードを返すようになりました
    • 修正: NewSession コマンドでの ChromeDriver の応答時間が予期せず遅くなる問題を修正しました。
    • 10 分を超えるユーザー定義のタイムアウトがサポートされるようになりました。
    • 修正: IPv4 と IPv6 の不一致により ChromeDriver が DevTools に接続できない問題を修正しました。
    • Linux での Chrome バイナリの検索順序を復元しました。

詳細については、リリースノートをご覧ください。

ChromeDriver 80.0.3987.106

Chrome バージョン 80 をサポート

  • Linux での Chrome バイナリの検索順序を復元

詳細については、リリースノートをご覧ください。

ChromeDriver 80.0.3987.16

Chrome バージョン 80 をサポート

  • プロキシの使用時に固定ページの読み込みが中止される問題を修正しました。
  • Chromedriver が Current frame の読み込みを待つようになりました。
  • ChromeDriver ログには、ドライバが使用するポートが含まれます。
  • w3c モードで SetGeoLocation を有効にしました。
  • UnexpectedAlertOpen ステータスの Alert テキストが欠落していたため、追加しました。
  • CRX2 拡張機能が読み込まれたときのメッセージを改善しました。
  • ExecuteGetPageSource での潜在的な競合状態を修正しました。
  • acceptInsecureCerts 機能が true の場合、ChromeDriver は --ignore-certificate-errors フラグを追加します
  • 実行コンテキストが存在しない場合のエラー メッセージと戻りステータスを更新しました
  • 修正: 保留中のナビゲーションを待機している間、ChromeDriver が無期限にブロックされることがある。
  • AddCookie と GetCookie に SameSite 属性を追加しました。

詳細については、リリースノートをご覧ください。

ChromeDriver 79.0.3945.36

Chrome バージョン 79 をサポート

バージョン 79.0.3945.16 からの変更点は次のとおりです。

  • 要素の座標の誤った計算を修正

詳細については、リリースノートをご覧ください。

ChromeDriver 79.0.3945.16

Chrome バージョン 79 をサポート

  • コマンド実行中に JavaScript アラートが発火したことが原因で ChromeDriver がクラッシュする問題を修正しました
    • スクリーンショットの撮影中にアラートがトリガーされると Chromedriver がロックされるバグを修正
    • Chrome の起動コマンドから --ignore-certificate-errors を削除
    • Win10 で platform と platformName を windows に変更
    • 「enable-automation」が除外されている場合に window.navigator.webdriver が未定義になる問題を修正
  • WPT テスト「test_not_editable_inputs[hidden]」を修正しました。
    • ヘッドレス モードの使用時に「要素がクリックできない」という問題を修正

詳細については、リリースノートをご覧ください。

ChromeDriver 78.0.3904.105

Chrome バージョン 78 をサポート

バージョン 78.0.3904.70 からの変更点は次のとおりです。 * 要素の座標の計算が正しくない問題を修正しました

詳細については、リリースノートをご覧ください。

ChromeDriver 78.0.3904.70

Chrome バージョン 78 をサポート

バージョン 78.0.3904.11 からの変更点は次のとおりです。

  • 報告された複数の問題のため、Retina ディスプレイでのスクリーンショットのサイズ調整の変更を元に戻しました

詳細については、リリースノートをご覧ください。

ChromeDriver 78.0.3904.11

Chrome バージョン 78 をサポート

  • JavaScript オブジェクトのシリアル化に関するいくつかの問題を修正しました。
    • Android 版 Chrome の機能のマッチングに関するバグを修正
    • 権限の自動化を実装しました
    • Retina ディスプレイでのスクリーンショットのサイズを固定
  • 一部のシナリオでページ読み込みがタイムアウトする問題を修正しました
    • platformName 機能のマッチングを改善
    • ポインタをプルダウン リストのオプションに移動したときに返されるエラーコードを修正
    • ヘッドレス モードでのダウンロードに影響する問題を修正しました

詳細については、リリースノートをご覧ください。

ChromeDriver 77.0.3865.40

Chrome バージョン 77 をサポート

バージョン 77.0.3865.10 からの変更点は次のとおりです。

  • JavaScript オブジェクトのシリアル化とシリアル化解除に関する 2 つのバグを修正
  • 機能のマッチング中に platformName: android の処理を修正

詳細については、リリースノートをご覧ください。

ChromeDriver 77.0.3865.10

Chrome バージョン 77 をサポート

  • Actions API の実装に関するいくつかの問題を修正しました。
    • JavaScript コードの実行と結果処理の改善
    • OSS モードで本文が空の POST リクエストが誤って拒否されるバグを修正
  • より堅牢なナビゲーション トラッカー
  • Eager ページ読み込み戦略をサポート
    • W3C WebDriver 仕様から New Window コマンドを追加
  • ヘッドレス モードでのファイル ダウンロードの保存をサポート
  • CRX3 拡張機能の読み込みのサポートを追加

詳細については、リリースノートをご覧ください。

ChromeDriver 76.0.3809.126

Chrome バージョン 76 をサポート

バージョン 76.0.3809.68 からの変更点は次のとおりです。

  • JavaScript オブジェクトのシリアル化とシリアル化解除に関する 2 つのバグを修正

詳細については、リリースノートをご覧ください。

ChromeDriver 76.0.3809.68

Chrome バージョン 76 をサポート

バージョン 76.0.3809.25 からの変更点は次のとおりです。

  • JavaScript オブジェクトの循環参照の検出に関するバグを修正しました
  • 特定のタイプの JavaScript エラーが発生したときに ChromeDriver がクラッシュするバグを修正しました
  • アクション API が Shadow DOM 内の要素を操作できないバグを修正しました。
    • アクション API コマンド間の修飾キーの状態の追跡に関するバグを修正
    • アクション API コマンド間のポインタの位置の追跡に関するバグを修正
    • 「Cannot call non W3C standard command while in W3C mode」エラーが発生した場合にログファイルに保存

詳細については、リリースノートをご覧ください。

ChromeDriver 76.0.3809.25

Chrome バージョン 76 をサポート

バージョン 76.0.3809.12 からの変更点は次のとおりです。

  • OSS モードで本文が空の POST リクエストが誤って拒否されるバグを修正
  • Chrome ログを取得するための新しいエンドポイントを追加しました。
    • W3C モードで Is Displayed コマンドのエンドポイントを追加

詳細については、リリースノートをご覧ください。

ChromeDriver 76.0.3809.12

Chrome バージョン 76 をサポート

  • Actions API の実装が完了しました
    • スクリプト タイムアウト処理の仕様準拠を改善
    • Execute Script コマンドの結果のシリアル化を改善
    • 要素をスクロールして表示する際の問題を修正
    • WebDriver 仕様で定義されている Cancel キーの処理を追加
    • 処理されていないアラート エラー レスポンスの処理を修正
    • <details> 要素の処理を修正
    • excludeSwitches オプションを更新し、スイッチ名で先頭のダッシュを省略可能にしました

詳細については、リリースノートをご覧ください。

ChromeDriver 75.0.3770.140

Chrome バージョン 75 をサポート

バージョン 75.0.3770.90 からの変更点は以下のとおりです。

  • 特定の種類の JavaScript エラーが発生したときに ChromeDriver がクラッシュするバグを修正しました
  • アクション間の修飾キーの状態を保持する際のバグを修正

詳細については、リリースノートをご覧ください。

ChromeDriver 75.0.3770.90

Chrome バージョン 75 をサポート

バージョン 75.0.3770.8 からの変更点は以下のとおりです。

  • OSS モードで本文が空の POST リクエストが誤って拒否されるバグを修正
  • Chrome ログを取得するための新しいエンドポイントを追加しました

詳細については、リリースノートをご覧ください。

ChromeDriver 75.0.3770.8

Chrome バージョン 75 をサポート

最も大きな変更点は、ChromeDriver がデフォルトで W3C 標準に準拠したモードで実行されるようになったことです。その他の変更点は次のとおりです。

  • 要素のクリア中に blur イベントが 2 回発生するバグを修正しました
  • W3C 標準の要件に従い、ケーパビリティ loggingPrefs の名前を goog:loggingPrefs に変更
  • W3C モードでのエラー処理を修正しました
    • ドメイン名の先頭にピリオドがない Cookie の作成を正しく処理
    • スクリプトのタイムアウトで null を許可
    • 「multiple」属性を持つファイル入力への Element Send Keys コマンドを修正
    • アクティブな要素が存在しない場合に「そのような要素はない」というエラーを返すように、アクティブな要素を取得するコマンドを修正しました
    • 形式が正しくない URL へのナビゲーションを修正し、「無効な引数」エラーを返すようにしました
    • 無効なセッション ID を受信したときの HTTP ステータス コードを修正
    • 入力パラメータがない場合や形式が正しくない場合のエラー レスポンスを修正
    • 行指向の JavaScript コメントを処理するように Execute Script コマンドを修正

詳細については、リリースノートをご覧ください。

ChromeDriver 74.0.3729.6

Chrome バージョン 74 をサポート

  • Windows で予期しない debug.log ファイルが生成されるバグを修正しました
  • SVG ドキュメント内でのマウスのクリックとドラッグ&ドロップを修正
  • ChromeDriver からのレスポンスに cache-control ヘッダーを追加
  • クリックが別の要素によってインターセプトされた場合のエラーの種類を修正しました
  • /dev/shm のない Linux デバイスで ChromeDriver が失敗するバグを修正
  • 一部のダブルクリック イベントを修正しました
  • Get Sessions コマンドを修正しました
  • Switch To Frame コマンドのエラー チェックを修正
  • Get Page Source コマンドを修正

詳細については、リリースノートをご覧ください。

ChromeDriver 73.0.3683.68

Chrome バージョン 73 をサポート

  • Windows で予期しない debug.log ファイルが生成されるバグを修正しました
  • 一部のシナリオで Execute Script コマンドから返されるエラーコードを修正しました
  • ChromeDriver からのレスポンスに cache-control ヘッダーを追加
  • HTTP サーバーがデフォルトで接続を維持するように変更
  • ユーザー プロンプトを正しく処理するように [ウィンドウを閉じる] コマンドを修正
  • 無効な要素にキーを送信する際に返されるエラーコードを修正
  • タイムアウト値処理の仕様準拠を改善
  • Add Cookie コマンドの仕様準拠を改善
    • HTTP サーバーのリスニング キューの長さを増加
  • v0 シャドー DOM の Is Element Displayed コマンドを修正しました。
    • ログファイルにおける Element Clear コマンドの動作変更に関する警告を追加
  • Execute Script コマンドで document.all を JSON 形式に正しく変換するように修正
  • 無効な要素参照の処理を改善

詳細については、リリースノートをご覧ください。

ChromeDriver 2.46

Chrome v71 ~ 73 をサポート

  • 一部のシナリオで Execute Script コマンドから返されるエラーコードを修正しました
  • HTTP サーバーがデフォルトで接続を維持するように変更
  • ユーザー プロンプトを正しく処理するように [ウィンドウを閉じる] コマンドを修正
  • 無効な要素にキーを送信する際に返されるエラーコードを修正
  • タイムアウト値処理の仕様準拠を改善
  • Add Cookie コマンドの仕様準拠を改善
  • Switch to Frame コマンドの仕様準拠を改善
  • HTTP サーバーのリスニング キューの長さを増加
  • v0 シャドー DOM の Is Element Displayed コマンドを修正
  • Fixed Element Double Click コマンド
  • ログファイルにおける Element Clear コマンドの動作変更に関する警告を追加
  • Execute Script コマンドで document.all を JSON 形式に正しく変換するように修正
  • 無効な要素参照の処理を改善

詳細については、リリースノートをご覧ください。

ChromeDriver 2.45

Chrome v70-72 をサポート

  • 修正済み: 新しいセッションが仕様に準拠していない
  • Chrome と ChromeDriver のバージョンに互換性がない場合に ChromeDriver が Chrome を起動しない問題を修正
  • 無効なロケータが使用された場合に Find Element コマンドが誤ったエラーコードを返す問題を修正
  • ChromeDriver のステータス コードが間違っている問題を修正
  • WebViewImpl::DispatchTouchEventsForMouseEvents 内の JS のコンパイル エラーを修正
  • 固定ウィンドウ サイズのコマンドでユーザー プロンプトを処理する必要がある
  • ChromeDriver が Chrome オプション「user-data-dir=」で Chrome を正しく起動しない問題を修正
  • 修正済み: Status コマンドが仕様に準拠していない
  • strictFileInteractability のサポートを追加しました

ChromeDriver 2.44

Chrome v69-71 をサポート

  • Mac での WindowMaximize を修正
  • ウィンドウ ハンドル呼び出しで「アラートを開くエラー」が誤って表示される問題を修正
  • W3C モードで Element Send Keys が「text」プロパティを取得する問題を修正
  • Is Element Enabled の XML 特殊ケースが仕様どおりに処理されない問題を修正
  • Get Element CSS Value の XML 特殊ケースが仕様どおりに処理されない問題を修正
  • Set Window Rect で無効な入力をチェックする必要がある問題を修正
  • 新しい unhandledPromptBehavior モードのサポートを修正

ChromeDriver 2.43

Chrome v69-71 をサポート

変更点は以下のとおりです。

  • プロキシ構成の解析が標準に準拠していない問題を修正
  • Launch app コマンドが不安定な問題を修正
  • iFrame 内の要素のスクリーンショットが正しく取得されない問題を修正しました
  • ChromeDriver でリモート接続経由のウィンドウ サイズ変更をサポート
  • Clear 要素でエラーコードが処理されない問題を修正しました
  • 要素が表示されるまで待機しない問題を修正
  • Get 要素プロパティが実装されていない問題を修正
  • フレームへの切り替えが仕様に準拠していない問題を修正
  • Execute Async Script が仕様に準拠したエラーコードを返さない問題を修正
  • Execute Script が仕様に準拠したエラーコードを返さない問題を修正
  • ExecuteGet のエラーコードが仕様に準拠していない問題を修正
  • Send Alert Text が仕様に準拠したエラーコードを返さない問題を修正
  • input type="date" の clear() が、要素がユーザー編集可能でないかのように振る舞う問題を修正
  • 修正: 手動で開いたタブのウィンドウ ハンドルを取得する Chromedriver
  • chromedriver の新しいログファイルの追加または開始を許可するを修正
  • フラグが firstMatch にある場合、New Session が w3c モードを呼び出さない問題を修正

ChromeDriver 2.42

Chrome v68-70 をサポート

変更点は以下のとおりです。

  • モバイル エミュレーションでの ClickElement を修正
  • IPv4 でホワイトリストに登録された IP を修正
  • Mac OS で whitelisted-ips フラグを使用して ChromeDriver を起動する問題を修正
  • SetTimeout が W3C 形式と W3C 以前の形式の両方を受け入れるように修正
  • 要素のスクリーンショットの取得を修正
  • ChromeDriver がシステム PATH で Chrome バイナリも検索する問題を修正
  • ウィンドウの最大化と全画面表示を修正
  • ログリプレイ機能を実装しました。(Android とリモート ブラウザではまだ機能しません)
  • 一部のエラーコードが W3C 標準に準拠していない問題を修正
  • 複数の引数を含む console.log が正しく処理されない問題を修正しました
  • GetElementRect で double が許可されるように修正
  • タッチ エミュレーションを修正

ChromeDriver 2.41

Chrome v67-69 をサポート

変更点は以下のとおりです。

  • ChromeDriver が「whitelisted-ips」オプションで実行される際の問題を修正
  • リモート デバッグ ポートが機能で返される
  • Android でウィンドウ サイズを取得する処理を実装
  • パソコン版 Chrome の起動エラー メッセージが改善されました
  • ChromeDriver が Chrome バイナリを起動できない場合にすぐに失敗する
  • Close Window の戻り値が仕様に準拠