下載內容
警告: 如果您使用 Chrome 115 以上版本,請參閱 Chrome for Testing 可用性資訊主頁。
在這個資訊主頁上,您會找到 JSON 端點,可下載特定 ChromeDriver 版本。舊版 Chrome
如果是舊版 Chrome,請使用下列版本的 ChromeDriver。
如要進一步瞭解如何選取正確的 ChromeDriver 版本,請參閱「版本選取」頁面。
ChromeDriver 148
修正錯誤
DOM 存取:修正了在 iframe 內模擬按鈕點擊時發生的當機問題,該 iframe 本身巢狀內嵌於已關閉的陰影根目錄中。先前用於尋找擁有者框架元素 ID 的 JavaScript 無法穿透封閉陰影根;新實作方式會直接使用 f.X.d.Y.e.Z 格式來解析框架 (crrev.com/c/7594919、Bug: 469831357)。
安全性:強化 Chrome 引數清除作業,防止可能涉及位置引數插入的安全漏洞 (crrev.com/c/7695604、Bug: 494464734)。
測試:在 AddressSanitizer (ASAN) 下執行時,增加 commands_unittest 中 FindElement(s)WhileNavigating 測試的 kImplicitWait 逾時時間。在 ASAN 負擔下,預設的 3 秒逾時不足以讓重試迴圈耗用所有模擬錯誤,導致不穩定 (crrev.com/c/7657276)。
內部變更和重構
C++ 標準:取代 base/functional/callback_forward.h //chrome .cc 檔案中多餘的包含項目,在實際使用回呼時強制使用 callback.h (crrev.com/c/7200285、Bug: 40318405)。將 logging::LoggingSettings 從 base/logging.h 移至自己的標頭 base/logging/logging_settings.h,以提升編譯效率 (crrev.com/c/7173024,還原後重新登陸 crrev.com/c/7160150 crrev.com/c/7170750)。解決與 base/logging.h 相關的各種 IWYU 錯誤 (crrev.com/c/7730403、Bug: 499476145)。
C++ 標準:以更有效率的 find(key) 迭代器存取權 (crrev.com/c/7705392、crrev.com/c/7693277、Bug: 452950815),取代多餘的對應 count(key) 檢查,然後進行查閱。透過 Thread 建構函式插入 ThreadDelegate,以改善封裝作業,並在 Thread 中新增 Restartable 選項,以因應需要重新啟動執行緒的情況 (crrev.com/c/7696887、錯誤:40881604)。
記憶體安全:在整個檔案中,將 #pragma allow_unsafe_buffers 轉換為 chrome/ 中的細微 UNSAFE_TODO() 巨集 (crrev.com/c/7132241、Bug: 409340989)。將 IOBuffer->span().first() 縮短為 IOBuffer->first() (crrev.com/c/7159119)。
依附元件:推出 crossbench 依附元件,修正 macOS 和 Android 上探索本機建構的 ChromeDriver 二進位檔時發生的問題 (crrev.com/c/7673978)。
測試:修正基礎建構和測試基礎架構後,重新啟用 chromedriver_py_tests 中的 module 配置 (crrev.com/c/7707960)。
ChromeDriver 147
修正錯誤
測試:新增了密封式迴歸測試,驗證 ElementClick 是否正確處理含有重疊元素的不同來源 iframe 點擊,特別是在網站隔離情境中。這可確保點擊不會錯誤地導向嵌入式內容,而是導向可見的疊加層 (crrev.com/c/7261984、錯誤:42321834、錯誤:42322220)。
內部變更和重構
C++ 標準:重新命名網址解碼模式和函式,以符合 Google C++ 樣式指南,並將 DecodeURLMode 變更為 DecodeUrlMode,以及將 DecodeURLEscapeSequences() 變更為 DecodeUrlEscapeSequences() (crrev.com/c/7593238)。導入 url::UrlEscapeDecoder,簡化整個程式碼集中的網址解碼用法 (crrev.com/c/7610180)。從 //chrome 檔案中移除多餘的 build/branding_buildflags.h 包含項目 (crrev.com/c/7595125、Bug: 40318405)。從 //chrome 中移除 BUILDFLAG(IS_FUCHSIA) 邏輯,但 ChromeDriver 內除外 (crrev.com/c/5485913、Bug: 41481724)。
記憶體安全 (範圍化):解決 ChromeDriver 公用程式中的 UNSAFE_TODO 標記,並將其遷移至以安全範圍為基礎的實作項目 (crrev.com/c/7562602、錯誤:435317390)。
ChromeDriver 146
修正錯誤
穩定性:修正 ChromeDriver 當機問題。如果視窗同時關閉 (例如等待導覽完成時),處理指令時可能會發生這個問題。這項修正會取得 WebView 物件的鎖定,防止物件過早遭到捨棄 (crrev.com/c/7257074、Bug: 468228355)。
安全性:針對傳入的 WebSocket 連線新增 Origin 標頭檢查,防止潛在的跨來源劫持 (crrev.com/c/7538400、Bug: 478783560)。
測試:將 testWebviewDetactedDuringClick 移至不穩定篩選器,在所有執行作業中略過,而不只是無標題模式 (crrev.com/c/7545378、錯誤:481485821)。
內部變更和重構
C++ 標準:將 base::DictValue 和 base::ListValue 重新命名為現代對應項目 (base::Value::Dict 和 base::Value::List),適用於 //chrome (crrev.com/c/7515855、crrev.com/c/7514475、Bug: 478100525)。將 base::Contains() 的用法替換為 std::ranges::contains() (crrev.com/c/7461026、Bug: 470391351)。在適當位置將 std::set 和 std::unordered_set 遷移至 base::fixed_flat_set (crrev.com/c/7521991、Bug: 473916362)。重構未指定剖析選項的 base::JSONReader::Read 呼叫 (crrev.com/c/6990988、crrev.com/c/6980533、Bug: 446188265)。以 base::WriteJson() 取代各種 base::JSONWriter::Write() 呼叫 (crrev.com/c/6969134、crrev.com/c/6929101、Bug: 443929217)。已清理 #include 訂單 (crrev.com/c/7366868)。將註解中的錯誤參照項目遷移至 Buganizer ID,而非 Monorail ID (crrev.com/c/7528268、Bug: 321899722)。為求明確起見,已將 IS_OZONE_* 建構旗標重新命名為 SUPPORTS_OZONE_* (crrev.com/c/7535923)。
記憶體安全 (範圍化):在 base/strings/utf_string_conversion_utils.cc 中,以 base::span 取代不安全的指標用法 (crrev.com/c/7496410、錯誤:439964610、錯誤:40284755)。在 //chrome 測試中,將更多 base::File 用法範圍化 (crrev.com/c/7489592、Bug: 435317390)。已在 //chrome 中以匯總初始化取代 memset (crrev.com/c/6875520、Bug: 435317390)。將其餘 #pragma allow_unsafe_buffers 轉換為 UNSAFE_TODO 標記 (crrev.com/c/7132241、錯誤:409340989)。
DSE Prewarm:在 macOS 和 Windows 的 fieldtrial_testing_config.json 中啟用 DSEPrewarm 功能,因為相關的 ChromeDriver 測試不穩定問題已解決 (crrev.com/c/7489009,在還原 crrev.com/c/7452344 後重新發布 crrev.com/c/7002185)。(注意:由於 Windows 上的測試執行階段增加 (crrev.com/c/7517985、錯誤: 478888140),因此這項重新發布的內容隨後再次遭到還原)。
診斷:在 WaitableEvent 和 ConditionVariable 追蹤事件中新增來電者位置追蹤功能,提升偵錯能力 (crrev.com/c/7487755、Bug: 476408124)。
ChromeDriver 145
新功能
測試:更新 run_py_tests.py 測試架構,接受以 input、textarea 和 contenteditable 元素為目標的不同長度確定性字串測試 (例如 53、101 和 501 個字元)。這項功能可確保在長時間的 send_keys 作業期間不會捨棄任何字元,提供迴歸涵蓋範圍 (crrev.com/c/7221410、Bug: 428116078)。
測試:針對 HTML
修正錯誤
螢幕截圖:還原元素螢幕截圖的縮放比例,因為 WebDriver 規格並未規定縮放比例,且這與其他螢幕截圖功能不一致 (crrev.com/c/7409603、Bug: 42323022)。
測試:更新 ChromeDriver 測試期望值,以符合 DevTools 前端 (crrev.com/c/7408699,錯誤:474179501) 中最近導入的正確值 (適用於平台、platformVersion、型號和行動欄位),修正 testClientHintsDeviceNameIPhoneX 和 testClientHintsDeviceNameIPad 中的失敗情形。
內部變更和重構
C++ 標準:將 //chrome 中各種 base::Contains() 的用法遷移至 std::ranges::contains() (crrev.com/c/7411011、Bug: 470391351),包括必要的格式修正 (crrev.com/c/7247217)。將字串參數重構為 std::string_view,避免使用 substr() 時出現不必要的字串分配 (crrev.com/c/7350716)。從 //chrome 標頭中移除多餘的
測試:重新登陸 InfobarPrioritization 欄位試驗設定,包括修正 ChromeDriver 瀏覽器測試中的當機問題,避免處理尚未新增至檢視區塊階層的待處理資訊列時發生當機情形 (crrev.com/c/7223590、錯誤:447176374)。重新推出 Glic 功能的國家/地區和語言代碼篩選功能,先前因無關的測試失敗而還原 (crrev.com/c/7245749,還原後重新推出 crrev.com/c/7148759,還原 crrev.com/c/7233767,錯誤:454431875)。
ChromeDriver 144
新功能
權限:更新 SetPermission 指令,使其符合最新的 W3C 規格,除了頂層來源外,也使用目前頁框的網址 (嵌入來源)。這會正確設定依附於內嵌環境的權限 (例如 storage-access) (crrev.com/c/7106801、在還原 crrev.com/c/7104484 後重新登陸 crrev.com/c/7093216、Bug: 384959114)。
測試:在 ChromeDriver 測試上傳酬載中新增 testMetadata (包括測試名稱),以便在使用結構化測試 ID 時支援不穩定性認可者 (crrev.com/c/7124354、錯誤:456432041)。
修正錯誤
目標生命週期:修正錯誤。如果子頁框正在等待指令回應,而父頁框已分離,ChromeDriver 就會停止運作。當父項 WebViewImpl 在指令處理期間遭到鎖定並標示為已分離時,ChromeDriver 現在會明確地以遞移方式分離子項框架 (crrev.com/c/7080912、Bug: 438436830)。
視窗管理:針對 ChromeDriver 工作階段停用遭遮蔽視窗的背景作業。這項修正解決了 WebDriver BiDi 的問題,如果瀏覽器錯誤地將視窗視為遭遮蔽並加以節流,測試可能會失敗 (crrev.com/c/7128058、Bug: 458027819)。
內部變更和重構
C++ 標準:移除 base/functional/callback_forward.h .cc 檔案中多餘的 base/functional/callback_forward.h 包含項目,並在實際使用回呼時強制使用 callback.h (crrev.com/c/7200285、Bug: 40318405)。//chrome將 logging::LoggingSettings 從 base/logging.h 移至自己的標頭 base/logging/logging_settings.h,以提升編譯效率 (crrev.com/c/7173024,還原後重新登陸 crrev.com/c/7160150 crrev.com/c/7170750)。將 base::HexEncode 的用途遷移至較新的 base::HexEncodeLower (crrev.com/c/7103100、Bug: 456472080)。
記憶體安全 (範圍化):將 PipeBuilder 和 PipeConnection 單元測試中的 WriteToPipe 和 WriteToPipeNoBestEffort 遷移至接受 base::span,修正不安全的緩衝區用量 (crrev.com/c/7090293、Bug: 455758227)。已將檔案範圍的 #pragma allow_unsafe_buffers 轉換為 chrome/ 中的細微 UNSAFE_TODO() 巨集 (crrev.com/c/7132241、錯誤: 409340989)。將 IOBuffer->span().first() 縮短為 IOBuffer->first() (crrev.com/c/7159119)。
ChromeDriver 143
修正錯誤
穩定性:修正 OverrideNetworkConditions 內的使用後釋放 (UAF) 當機問題。系統會釋出為後續應用程式儲存的原始指標,現在已妥善管理 (crrev.com/c/7047422、Bug: 42323833)。
測試:利用 WaitForCondition API 進行更可靠的同步處理,修正不穩定的 Android ChromeDriver 觸控測試 (crrev.com/c/6978928、Bug: 42321861)。
DSE Prewarm:透過 --disable-features=Prewarm 參數預設停用 ChromeDriver 中的 Prewarm 功能,避免預先暖機的網頁干擾測試執行和目標探索 (crrev.com/c/7007072、Bug: 431928370)。
內部變更和重構
C++ 標準:在僅使用智慧指標的 //chrome 標頭中,將 ref_counted.h 換成 scoped_refptr.h,提高編譯效率 (crrev.com/c/7080753、Bug: 40245294)。已將 GURL 存取子項遷移至 Get* 變數 (例如 GetSpec(),而非 spec()),清楚指出字串分配情形,避免發生意外的效能懲罰 (crrev.com/c/7002119、Bug: 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、Bug: 438884256)。
測試:新增支援結構化測試 ID 上傳至 ResultSink,適用於 ChromeDriver 的 Python 整合測試 (crrev.com/c/6916708、Bug: 418015486)。
修正錯誤
診斷:修改 ChromeDriver 在正常 Chrome 結束時的行為,不再發出與 user-data-dir 用法相關的混淆通用錯誤訊息。現在會明確指出執行個體已終止,並引導使用者查看 Chrome 擲回特定錯誤的詳細記錄 (crrev.com/c/6977507、Bug: 42323434)。
初始化:更新 ChromeDriver 的初始化結構,以繼續與 Selenium WebDriver v4.16.0 的變更內容相容 (crrev.com/c/6630600)。
Android:修正舊版 Android (Android 11 以前) 的 CheckAppInstalled,這些版本不支援套件管理工具的 --user cur 旗標 (crrev.com/c/6785949、錯誤:433885051)。
測試:修正 IgnoreDuplicateNavs 錯誤覆寫 ChromeDriver 中預設功能切換開關的問題。這項功能已針對 ChromeDriver 工作階段停用,且 Switches::SetFromSwitches 邏輯已修正 (crrev.com/c/6949166、錯誤:445332809)。
內部變更和重構
C++ 標準:以 base::WriteJson() 取代多個已淘汰的 base::JSONWriter::Write() 呼叫,在未檢查傳回值時,維持失敗時傳回空字串的行為 (crrev.com/c/6969134、crrev.com/c/6929101、Bug: 443929217)。在 base::JSONReader::Read 和 base::JSONReader::ReadAndReturnValueWithError 中,針對不相容的 JSON 剖析選項 (例如允許註解) 啟用明確的選擇加入機制 (crrev.com/c/6990988、crrev.com/c/6980533、Bug: 446188265)。手動擴展範圍後,已移除檔案範圍的 #pragma allow_unsafe_buffers pragma (crrev.com/c/6778035、Bug: 409340989)。清除有記憶體外洩問題的 LazyInstance 巨集用法 (crrev.com/c/6781377、Bug: 432815283)。透過 IWYU 為 http_response_headers.h 加入缺少的標頭 (crrev.com/c/6894196、Bug: 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、Bug: 40760278)。
FedCM:導入 ShouldShowAccountsPassiveDialog 函式,可同步檢查是否應顯示帳戶對話方塊,修正與非同步檢查和開發人員工具檢測相關的當機問題 (crrev.com/c/6780413、Bug: 425801332)。IdentityDialogController
DSE Prewarm:在 DevTools 協定中新增 Page.setPrewarmingAllowed,做為手動啟用或停用預先暖機的短期解決方案,並修正相關測試,確保測試能與主要網頁正確互動 (crrev.com/c/6847287、Bug: 431928370)。解決不穩定問題後,在 macOS 和 Windows 版 fieldtrial_testing_config.json 中啟用 DSEPrewarm 功能 (crrev.com/c/6951835、Bug: 431928370、Bug: 435621391)。(注意:由於 CDP 指令和欄位試驗啟用作業會對 WebDriver 使用者造成破壞性變更,分別導致公開非預期目標和其他下游問題 (crrev.com/c/6966133、crrev.com/c/6966161、Bug: 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)。
修正錯誤
診斷:防止 ChromeDriver 在傳回 kTabCrashed 錯誤時,列印自己的內部堆疊追蹤記錄。這可避免使用者感到困惑,同時確保記錄檔中仍有轉譯器當機堆疊追蹤記錄 (crrev.com/c/6841669、Bug: 395131239)。
內部變更和重構
C++ 標準:在 chrome/ 中,以標準 C++ 聚合初始化 (instance = {}) 取代可能不安全的 memset 呼叫,避免略過建構函式並確保記憶體安全 (crrev.com/c/6875520、Bug: 435317390)。透過 IWYU 為 //base/time/time.h 新增缺少的 #include 指令 (crrev.com/c/6832689、Bug: 40216326)。重新編寫強制執行的不安全緩衝區 Pragma (crrev.com/c/6828538)。
測試:為 crbug.com/413382905 新增迴歸測試 (crrev.com/c/6879417)。
檢視畫面轉場效果:重新推出檢視畫面轉場效果修正程式,在完成的 Promise 解決後更新先前完成的工作,因為先前與 ChromeDriver 測試失敗相關的推測性還原證明不正確 (crrev.com/c/6846765,在還原 crrev.com/c/6808537 後重新推出 crrev.com/c/6806850)。
ChromeDriver 140
修正錯誤
目標選取:修正問題。在 Chrome 啟動時使用 --auto-open-devtools-for-tabs,開發人員工具視窗可能會與主要頁面競爭,爭取成為主要視窗。ChromeDriver 現在會在判斷主要視窗時,明確排除以 devtools:// 為前置字元的目標 (crrev.com/c/6769505、Bug: 427908560)。
目標選取:忽略祖先施加的任何 overflow:hidden 剪裁,避免 ChromeDriver 錯誤計算元素的檢視中心點。這項變更可讓計算方式與 WebDriver 規格和其他 PerformActions 情境保持一致 (crrev.com/c/6735230、錯誤:42322257)。
Android:修正舊版 Android (Android 11 以前) 的 CheckAppInstalled 函式,這些版本不支援套件管理員的 --user cur 旗標 (crrev.com/c/6785949、錯誤:433885051)。
測試:修正 DSEPrewarm 功能導致 chromedriver_py_tests 測試套件不穩定的問題。現在,當 CDP 用戶端附加至 ChromeDriver 時,系統會停用預先暖機觸發程序,避免測試期間出現非預期的目標計數 (crrev.com/c/6764274、Bug: 423465927、Bug: 431928370)。
測試:還原新增至 IdentityDialogController (FedCM 的一部分) 的 ShouldShowAccountsPassiveDialog 函式,這項異動導致回歸 (crrev.com/c/6780413、錯誤:425801332)。
內部變更和重構
C++ 標準:透過「Include What You Use」(IWYU) 新增遺失的 std::vector #include (crrev.com/c/6652818、錯誤:40216326)。移除了 //chrome 標頭中多餘的 gurl.h (crrev.com/c/6578272) 和
記憶體安全 (範圍化):在 Linux 建構版本中執行自動指標範圍化工具,更新程式碼以在已知大小的位置使用範圍 (crrev.com/c/6734592,錯誤:431824299)。遷移完成後,已移除整個檔案的 #pragma allow_unsafe_buffers pragma (crrev.com/c/6778035、Bug: 409340989)。chrome/從 -Wexit-time-destructors 警告中排除 chrome/test 目標,允許全域啟用警告 (crrev.com/c/6736532、Bug: 40031409、Bug: 430332953)。清除 //chrome 下的洩漏 LazyInstance 用法 (crrev.com/c/6781377、Bug: 432815283)。
清除:移除 --debug-bidi-mapper CLI 旗標,因為在隱藏目標中執行 BiDi 對應器的轉換作業已完成且穩定 (crrev.com/c/6672011、錯誤:408992812)。
清除:移除對不支援的 WebLayer 專案的其餘參照 (crrev.com/c/6792520、Bug: 40272607)。自動格式化 //chrome/test GN 檔案,縮短目標參照 (crrev.com/c/6789277、Bug: 40760278)。
測試:新增了驗收測試,可驗證 PerformActions pointerMove 問題的修正 (crrev.com/c/6648646、錯誤:42322257)。
測試:註解掉 testBrowserWithUsedUserDataDir 測試的平行驅動程式建立區段 (並提出追蹤錯誤),因為使用 chrome-headless-shell 時,這會在 macOS 上造成與獨占鎖定相關的失敗 (crrev.com/c/6470455、錯誤:411407649、錯誤:380903149)。
測試:更新 iOS 的 run_cwt_chromedriver.py 包裝函式,支援 --platform-type 引數 (crrev.com/c/6771517、錯誤:427548014)。
擁有者:已從 chrome/test/chromedriver/OWNERS 檔案中移除 nvitkov (crrev.com/c/6771413)。
ChromeDriver 139
修正錯誤
初始化結構:更新 ChromeDriver 初始化結構,以維持與 Selenium WebDriver v4.16.0 更新 (crrev.com/c/6630600) 的相容性。
引數剖析:合併多個 --js-flags 引數 (類似於 --enable-features 的處理方式),而非只採用最後一個提供的引數。這樣一來,傳遞複雜的 V8 標記時,可用性就會提升 (crrev.com/c/6612042、Bug: 421941798)。
內部變更和重構
記憶體安全 (範圍化):在 //chrome/test 中,以 std::string_view 取代已淘汰的 base::MakeStringPiece() 用法 (crrev.com/c/6628089、Bug: 422940464)。在 base/strings/string_view_util.h 的使用位置加入 base::as_string_view(),為日後的命名空間遷移作業做準備 (crrev.com/c/6625024、Bug: 423048781)。
C++ 標準:在 //chrome 中明確納入
測試:將 --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)。
建構基礎架構:禁止 android_resources() 目標擁有資訊清單,藉此移除 write_build_config.py 上不必要的建構依附元件,因為資訊清單合併和 R.java 套件命名現在是由專屬屬性處理 (crrev.com/c/6625266、錯誤:413331591)。
FedCM:修正與 FedCM 相關的 Finch 設定功能旗標 (crrev.com/c/6614137、錯誤:421959289)。
ChromeDriver 138
新功能
螢幕功能管理:更新了可視區域區隔的 ChromeDriver 行為,以符合最近的 CSS 工作群組解決方案:現在使用平放的可摺疊裝置或所有非可摺疊裝置時,一律會傳回含有單一區隔的陣列。這與媒體查詢行為相符,可降低指紋辨識風險 (crrev.com/c/6469455、Bug: 414430842)。
偏好設定和本機狀態 (Android):在 Android 裝置上執行 ChromeDriver 時,新增對 localState 和 prefs 功能的支援。這項功能依賴 ADB,且需要自訂 user-data-dir 標記;目前會使用預設範本初始化狀態 (crrev.com/c/6397155、Bug: 406427226)。
修正錯誤
穩定性:修正使用者透過「繼續」按鈕關閉首次執行體驗 (FRE) 對話方塊時,macOS 發生 ChromeDriver 當機的問題。當系統覆寫 kTargetDetached 錯誤狀態,並嘗試存取無效的 WebView 時,就會發生當機問題 (crrev.com/c/6538867、錯誤:410599467)。
效能測試:修正 Windows pinpoint 機器上的 crossbench 測試執行器,該執行器會在使用過時的 ../Release_x64 路徑時,錯誤地嘗試找出 ChromeDriver 二進位檔,導致系統改為下載舊版二進位檔,而非使用本機建構 (crrev.com/c/6502134)。--browser=release_x64
內部變更和重構
記憶體安全 (範圍化):以 base::span 取代 WebSocket::OnReadDuringHandshake 和 WebSocket::OnReadDuringOpen 中未檢查的指標,解決 unsafe-buffer-usage 警告 (crrev.com/c/6557346、Bug: 354307328)。移除 chrome/test/chromedriver 中不必要的 #pragma allow_unsafe_buffers pragma,這些 pragma 在其他遷移作業後已不再需要 (crrev.com/c/6503154、Bug: 414858406)。
C++ 標準:移除 chrome/ 標頭中多餘的 #include "url/gurl.h" 和 #include
API 遷移:將 RSAPrivateKey 遷移至 crypto::PrivateKey,並將 SHA256HashString 遷移至 crypto::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)。
測試:延長 Protected Audience WebDriver 測試的逾時時間,解決較慢 CI 機器人上的不穩定問題 (crrev.com/c/6494277)。
ChromeDriver 137
新功能
螢幕功能管理:新增 ChromeDriver 指令,可模擬及清除螢幕功能,並實作 Viewport Segments API (CSS 和 JS) 的自動化需求。開發人員可藉此在雙螢幕或摺疊式裝置上,以程式輔助方式測試摺疊或轉軸情境 (crrev.com/c/6368674、錯誤:40137084)。
BiDi:根據預設,ChromeDriver 會在隱藏目標中執行 BiDi 對應程式。避免對應工具的 data:, 頁面干擾測試執行和可見度。如要偵錯對應器,用戶端可以傳遞 --debug-bidi-mapper 旗標,在可見的分頁中執行對應器 (crrev.com/c/6441064,還原後重新登陸 crrev.com/c/6433672,crrev.com/c/6439633,錯誤:402339952)。
修正錯誤
BiDi:如果 ChromeDriver 遺失其他 CDP 或 BiDi 工作階段建立的目標,處理 BiDi 指令 (例如 browsingContext.close) 時,就不會誤關整個瀏覽器工作階段。現在會先明確同步處理頂層分頁,再決定是否終止瀏覽器 (crrev.com/c/6440293、Bug: 42323838)。
BiDi:與上游 WebDriver BiDi 規格保持一致,確保 ChromeDriver 會移除以空字串形式傳遞的 goog:channel 功能,並將其視為缺少管道 (crrev.com/c/6438865、Bug: 409282307)。
輸入:更新 ChromeDriver,支援指標移動指令中的分數 (浮點) x 和 y 座標,修正觸控和指標事件失敗或行為異常的問題 (crrev.com/c/6440834、Bug: 409684333)。
目標選取:如果停用 PdfOopif 功能,系統會防止在訪客檢視畫面中開啟的 PDF 獨立處理程序 iframe (OOPIF) 滲入頂層目標清單。擴充篩選邏輯,正確排除這些以 chrome-extension:// 為前置字元的目標 (crrev.com/c/6383500、Bug: 396611138)。
內部變更和重構
C++ 標準:重新登陸變更,在 LogMessage 和追蹤事件中使用 std::string_view 做為檔案名稱,解決導致先前還原的空值終止字串處理問題 (crrev.com/c/6430129、重新登陸 crrev.com/c/6395097、在還原 crrev.com/c/6383699 後重新登陸 crrev.com/c/6387020)。
C++ 標準:更新 Environment::GetVar 中的 //chrome 呼叫,改用 std::optional 傳回的 API,而非輸出參數 (crrev.com/c/6417343、錯誤:400758498)。
C++ 標準:將 Windows 專屬控制代碼輔助程式從 win_util.h 重構至專屬的 windows_handle_util.h 標頭,避免循環依附元件問題 (crrev.com/c/6418805、Bug: 406023316)。
測試:新增 Android 專用的 Browser 網域處理常式,並實作 Browser.getWindowForTarget API,支援 Android 視窗建立測試 (crrev.com/c/6427605、Bug: 404932444)。
測試:修正擴充功能初始化時間過長導致的 macOS 測試不穩定問題 (crrev.com/c/6423229、錯誤: 407804497)。
測試:在針對 chrome-headless-shell 執行時,暫時停用 testBrowserWithUsedUserDataDir 中的平行 user-data-dir 建立作業,因為這與 macOS 上的專屬鎖定發生衝突 (crrev.com/c/6470455、Bug: 411407649、Bug: 380903149)。
擴充功能:更新 Chrome 測試,以便在啟用 ExtensionManifestV2Unsupported 欄位試用時通過測試。這是基礎步驟,但試用本身仍處於停用狀態,須等待其他存放區的更新 (crrev.com/c/6415997、Bug: 367395349)。(注意:先前嘗試透過設定啟用這項試用功能時,已還原 crrev.com/c/6397497,並還原 crrev.com/c/6358257)。
依附元件:手動推出 catapult 依附元件,並更新相關聯的 pydeps 檔案和 devil_util 參照 (crrev.com/c/6480814、crrev.com/c/6466865、在還原 crrev.com/c/6448910 後重新登陸 crrev.com/c/6406098、錯誤:397459590)。
ChromeDriver 136
新功能
瀏覽器生命週期:新增 Chrome 專屬功能 quitGracefully,可強制 ChromeDriver 嘗試正常停止瀏覽器 (使用 Browser.close 或 SIGTERM),而非預設的 SIGKILL。這可讓 rr 等偵錯工具在程序終止前,有時間傾印記錄 (crrev.com/c/6322538,在短暫還原 crrev.com/c/6320536 後,重新登陸 crrev.com/c/6269180,錯誤:339644807)。
測試:產生暫時性包裝函式指令碼,將瀏覽器二進位檔加上偵錯工具 (例如 rr) 及其引數的前置字串,藉此將 run_wpt_tests.py --wrapper 引數導入。這項做法可解決 ChromeDriver 無法在 args 處理為切換時直接替換二進位檔的問題 (crrev.com/c/6271108、Bug: 339644807)。
測試:在 TranslateEnabledTest 中透過偏好設定啟用翻譯功能,支援 ChromeDriver 管理瀏覽器程序並略過新的 --remote-debugging-port 限制的測試環境 (當 --user-data-dir 為隱含時) (crrev.com/c/6354089、Bug: 327797500)。
DevTools:新增開發人員工具多實體功能支援,可在 Android 上的另一個視窗中開啟新分頁 (crrev.com/c/6352169、錯誤:401269942、錯誤:382183406)。
修正錯誤
目標選取:修正問題。停用 PdfOopif 功能後,系統不會從頂層目標清單中,篩除在訪客檢視畫面中開啟的 PDF 程序外 iframe (OOPIF)。篩選器已擴大範圍,納入 chrome-extension 前置字元,解決錯誤並涵蓋建立分頁的 MV3 Chrome 擴充功能 (crrev.com/c/6383500、Bug: 396611138)。
目標選取:修正了導致 getWindowHandles() 指令在以封裝的 Chrome 應用程式為目標時失敗並顯示 connection refused 狀態的回歸問題 (crrev.com/c/6317161、錯誤:396622746)。
內部變更和重構
C++ 標準:重新登陸使用 std::string_view 檔案名稱的變更 (位於 LogMessage 和追蹤事件中),改善與不保證空值終止字串的 Rust 記錄結構的相容性 (crrev.com/c/6387020,在還原 crrev.com/c/6383699 和另一次還原 crrev.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、Bug: 390223051)。
擴充功能:由於發生問題,已還原 ExtensionManifestV2Unsupported 階段的 fieldtrial_testing_config.json 項目新增作業 (crrev.com/c/6397497,還原 crrev.com/c/6358257,錯誤:367395349,錯誤:406523920)。
說明文件:改善 Android 專屬的 ChromeDriver 測試說明文件 (crrev.com/c/6354040)。
ChromeDriver 135
新功能
BiDi:更新 BiDi 對應器,在指定 --enable-unsafe-extension-debugging 時繼承 ChromeDriver 權限。這項功能可讓 WebDriver BiDi 用戶端有效測試擴充功能,這些擴充功能通常需要 WebDriver 用戶端擁有的權限 (crrev.com/c/6288627、Bug: 393500934)。
修正錯誤
測試:重新啟用並更新先前標示為失敗的幾項 WDSpec 測試的期望值。這項變更會還原通過測試的規格一致性涵蓋範圍 (crrev.com/c/6310420)。
內部變更和重構
清除:從 chrome/test/ 中移除 Lacros 的所有痕跡 (包括 IS_CHROMEOS_LACROS 和相關測試資料),因為 Lacros 即將淘汰,並改用 IS_CHROMEOS (crrev.com/c/6284446、錯誤:354842935)。
清除:移除 md5sum 公用程式的所有追蹤記錄,因為該公用程式已由 devil_util 取代,並清除舊版建構依附元件 (crrev.com/c/6309939、Bug: 397452007)。
C++ 標準:從 ResultCode 和 IsNormalResultCode() 中移除 chrome:: 命名空間,並將其移至全域命名空間,同時移除過時的 ChromeOS 啟動匯入項目 (crrev.com/c/6196899、Bug: 41050580)。
記憶體安全:利用 std::ranges::lower_bound 簡化 ChromeDriver 中的 std::lower_bound 呼叫 (crrev.com/c/6223172、Bug:392116519)。為準備日後強制執行,針對最初識別出的不符規定檔案,抑制 unsafe_libc_call 警告 (crrev.com/c/6187925、Bug: 390223051)。將 std::to_array 的回傳值標示為 constexpr,以提升安全性並進行編譯時間評估 (crrev.com/c/6298909)。
ChromeDriver 134
新功能
跳轉追蹤因應措施 (DIPS):重新推出 ChromeDriver 對跳轉追蹤因應措施的支援,並使用 RunBounceTrackingMitigations 指令。整合測試已重新架構為使用不同的網頁,確保系統會在執行指令前正確記錄有狀態的跳出。這項功能支援 nav-tracking-mitigations 規格,並在 //chrome 中實作 (crrev.com/c/4935955、錯誤:1474656)。(附註:最初是在 crrev.com/c/4873672 中新增,但後來已還原)。
BiDi:更新 ChromeDriver,使用帶有 goog: 前置字元的標準 WebDriver BiDi 擴充功能屬性,與上游 chromium-bidi 變更保持一致。不再允許使用舊版 channel 屬性 (crrev.com/c/6179410)。
Windows:在 Windows 的 chromedriver.exe 二進位檔中新增版本資源 (crrev.com/c/6114586,錯誤:385300323)。
修正錯誤
MPArch/Targets:修正回歸問題,在 ChromeOS 上判斷主要目標時,系統會錯誤地探索 Chrome 擴充功能目標 (chrome-extension://) 並附加至該目標,導致後續指令 (例如導覽) 失敗。現在在初始階段會正確略過擴充功能目標 (crrev.com/c/6183202、Bug: 385241097)。
MPArch/Targets:修正另一項迴歸問題,當擴充功能目標支援功能停用時,系統不會從頂層網頁檢視畫面中正確篩選擴充功能 background_page 的分頁目標 (crrev.com/c/6160774、Bug: 385731198)。
MPArch/Navigation:修正問題。在 MPArch 啟用期間,分頁可能暫時沒有附加任何有效網頁,導致 ChromeDriver 誤判為錯誤狀態。ChromeDriver 現在會等待分頁取得新網頁並完成導覽,再解析狀態 (crrev.com/c/6177606)。
記錄處理:修正因含有多位元組字元的記錄字串截斷不當,導致 base::Value() 發生 DCHECK 失敗而當機的問題。更新邏輯,改用 UnicodeString 邊界偵測,而非簡單的 std::string 長度檢查,確保程式碼點有效 (crrev.com/c/6210809、Bug: 367752739)。
測試:由於最近的 MPArch 重構作業可讓 ChromeDriver 正確執行這些 WPT,因此我們已將大部分與預先算繪相關的 WPT (除了少數有已知 API 問題的 WPT) 從 content_shell 遷移至 headless_shell (crrev.com/c/6168830、Bug: 42323502、Bug: 366257368)。
內部變更和重構
C++ 標準:將 base::ranges 的用法替換為標準 std::ranges (crrev.com/c/6200893、crrev.com/c/6177197、Bug: 386918226)。盡可能使用 base::ToString(bool) 重新編寫 b ? "true" : "false" 模式 (crrev.com/c/6165810、錯誤:335797528)。已移除不安全的 StringPrintfNonConstexpr() 函式,並替換為更安全的字串格式替代方案 (crrev.com/c/6149756)。以標準 begin/end 迭代器取代指標算術 (+ std::size),解決不安全的緩衝區警告 (crrev.com/c/6217045、Bug: 392116519)。
清除:移除 FedCmIdpSigninStatus 功能旗標及其執行階段旗標 (crrev.com/c/6111321、錯誤:381211734)。(注意:先前嘗試移除時發生中斷,因此已還原 crrev.com/c/6082405)。
ChromeDriver 133
新功能
架構:重構 ChromeDriver,支援多頁面架構 (MPArch) 和分頁目標。WebViewImpl 現在會透過 AutoAttach 連線至分頁目標。先前保留頁面的指令現在會尋找分頁下的有效頁面。這項變更可讓您檢查擴充功能背景網頁,現在可透過 enable_extension_targets 功能指定這些網頁 (預設會略過擴充功能目標) (crrev.com/c/5961156、Bug: 379767670、Bug: 42323502)。修正回歸問題,避免系統將 chrome-extension:// 網址頁面誤認為擴充功能目標;選取項目已還原為僅限 type=background_page (crrev.com/c/6093588、Bug: 383141569)。將 enableExtensionTargets 移至 Chrome 選項,而非頂層功能 (crrev.com/c/6093032)。
傳統:重新支援多鍵元素參照。這項未記錄的功能通常用於建立與 W3C 和非 W3C 模式相容的參照,現在已獲得正式支援,並納入整合測試 (crrev.com/c/6063257、錯誤:379584343)。
修正錯誤
穩定性:處理 browsingContext.close 指令時,ChromeDriver 不會無限期封鎖。ChromeDriver 現在會使用不同的機制判斷是否需要關閉瀏覽器,因此可以正確處理 beforeunload 提示,不會停滯 (crrev.com/c/6080431、Bug: 42323838、Bug: 379049702)。
導覽:修正了網址為 about:blank?test 的虛擬頁面會導致停滯的錯誤。現在,用來識別沒有回應的新視窗 (baseURL==about:blank 和 documentURL!=about:blank) 的啟發式方法,會正確處理這些查詢字串網址 (crrev.com/c/6038039、Bug: 377410086)。
導覽:新增邏輯,以便重試因 AbortedByNavigation 錯誤而失敗的指令。ChromeDriver 現在會先嘗試執行指令數次,然後才會放棄並傳回標準的 Timeout 錯誤 (crrev.com/c/6012427、Bug: 42323825)。
診斷:直接透過 NavigationTracker 轉送 kTargetCrashed 錯誤。如果目標在導覽偵測期間當機,系統現在會向使用者顯示這項特定錯誤,而非一般逾時錯誤,有助於改善診斷結果 (crrev.com/c/6032612、Bug: 377410086)。
Android:修正 chrome_android_impl.cc 中的分頁目標查閱 (crrev.com/c/6110492、錯誤:384781876)。
測試:修正 win11-arm64 上多項視窗大小測試的不穩定問題 (例如點選遭遮蔽的元素)。現在,測試會在調整大小作業後重複查詢內部視窗大小,直到正確註冊正向高度為止,以因應視窗重新繪製速度緩慢的問題 (crrev.com/c/6012658、Bug: 378470046)。
測試:將一般 Python 連線錯誤對應至 WebSocketConnectionClosedException,簡化錯誤處理 (crrev.com/c/6054134),在預期會立即產生副作用的情況下使用 SendCommand 而非 PostCommand,避免競爭狀況 (crrev.com/c/6054137),並以更可靠的導覽偵測機制取代對 ExecuteScript 立即影響的依賴 (crrev.com/c/6063040、Bug: 42323825),修正整合測試中的多個不穩定問題。
測試:還原移除 FedCmIdpSigninStatus 功能旗標的作業,因為移除該旗標會導致中斷 (crrev.com/c/6082405,還原 crrev.com/c/6078693,錯誤:384866916,錯誤:381211734)。
工具:在 log_replay 指令碼中新增 Print 指令的支援 (crrev.com/c/6010809、錯誤:378451938)。
內部變更和重構
C++ 標準:移除 Mojo.InvalidUTF8String 直方圖,以便清理公開的 mojo 標頭,以及後續的 IWYU 層疊 (crrev.com/c/6133861、Bug: 40509710、Bug: 386793084)。
C++ 標準:避免在 WaitableEvent::Wait() 中分配記憶體,方法是從 std::list 切換至 base::circular_deque (crrev.com/c/6097198)。
C++ 標準:盡可能在 chrome/ 程式碼集中,預設使用者定義的空白建構函式和解構函式 (crrev.com/c/6101911、crrev.com/c/6056220、Bug: 381119547)。
記憶體安全 (範圍化):將 C 樣式陣列遷移至 std::array,這是為解決 -Wunsafe-buffer-usage 警告而進行的廣泛工作之一 (crrev.com/c/6043879、錯誤: 378069401)。chrome/在範圍函式中,嚴格使用 size_t (crrev.com/c/6026238、crrev.com/c/6020621)。
測試:上傳全螢幕 {ref,crash}tests 回 wpt_internal/,因為 testdriver 現在支援全螢幕 (crrev.com/c/6088404)。
測試:修正 iOS 的 wptrunner,以便在使用非預設輸出目錄 (例如 //out/*-ios-wpt-fyi-rel/) 時,正確找出 ChromeDriver wrapper,方法是正確地進行 --build-directory (crrev.com/c/6014940、Bug: 374199289、Bug: 355218109)。
測試:新增 testBrowserCrashWhileWaitingForEvents 整合測試,示範用戶端未注意到嚴重錯誤的迴歸案例 (crrev.com/c/6025145、錯誤:379049702)。
測試:抑制在 headless_shell 下與 ChromeDriver 搭配執行時會當機的特定 WPT,以穩定建構工具 (crrev.com/c/6032163、錯誤:377410086)。
ChromeDriver 132
新功能
測試:為 ChromeDriver 整合測試新增 repeat 和 retry-limit 命令列參數的支援,將這些參數對應至標準 isolated-script-test-repeat 和 isolated-script-test-launcher-retry-limit 引數 (crrev.com/c/5938195、錯誤:374681919)。對於在本機執行的測試 (非 CI),預設 retry-limit 已變更為 0 (crrev.com/c/5953326、Bug: 374681919)。
WebSockets:在 EmbeddedTestServer 中實作 WebSocketConnection 和相關類別,讓 WebSocket 相關測試從 SpawnedTestServer 遷移。包括根據通訊協定設定框架,以及簡化處理常式註冊程序 (crrev.com/c/5849732、Bug: 40812029)。
修正錯誤
穩定性:修正 ChromeDriver 損毀問題。如果點選指令導致瀏覽器關閉,先前重構作業導入的 kTargetDetached 錯誤狀態可能會導致這個問題 (crrev.com/c/5934524、Bug: 42323264)。
穩定性:修正 Mac ARM64 上的 testClickNavigateRemoteToLocal 整合測試間歇性當機問題,方法是解決競爭狀況 (crrev.com/c/5975526、Bug: 375971185)。
導覽:修正 GoBack 和 GoForward 指令。先前,如果文件從有效狀態轉換時呼叫 Page.getNavigationHistory (表示導覽正在進行中),這兩個指令就會失敗。ChromeDriver 現在會在此情境中正確重試指令 (crrev.com/c/6011739、Bug: 378433873)。
指令碼執行:確保觸發導覽或關閉視窗的指令碼正確傳回標準 ScriptTimeout 錯誤 (如果瀏覽器端無法保證結果),提示使用者避免模稜兩可的測試結構 (crrev.com/c/5934265、Bug: 372883701)。
指令碼執行:修正記錄重播功能失敗的問題,並顯示「unexpected command response」錯誤 (crrev.com/c/5961142、Bug: 42323342)。
錯誤代碼:修正 ChromeDriver 的錯誤處理機制,不再強制將所有例外狀況 (含「code」屬性) 包裝成一般「javascript error」。這可確保「過時的元素參照」(來自 call_function.js) 和「無效的元素狀態」(來自 Selenium Atoms CLEAR 函式) 等標準錯誤,都能準確傳播給使用者 (crrev.com/c/5937893、Bug: 42323409)。GetElementTagName 中改善錯誤處理機制,可將缺少的標記名稱資訊正確解讀為「物件不是元素」(crrev.com/c/5929087)。
BiDi:修正使用自訂使用者設定檔時,BiDi 工作階段無法初始化的問題。自訂設定檔載入的頁面可能會導致 BiDiMapper 無法啟動;ChromeDriver 現在會確保第一個分頁一律載入 data:,,為對應器提供乾淨的環境 (crrev.com/c/5960656、Bug: 366886096)。
無痕模式:修正一項錯誤,避免 ChromeDriver 在無痕模式下運作時無法建立新分頁 (crrev.com/c/5952980、Bug: 42323352)。
測試:修正 testScriptNavigateRemoteToLocal 整合測試中的不穩定問題 (失敗率為 8.33%),並新增 C++ 整合測試,以重現及驗證競爭狀況的修正內容 (crrev.com/c/6010867、錯誤:378387680)。
測試:在 Mac (testWindowMinimize) 和 Windows (ChromeDownloadDirTest.testFileDownloadAfterTab、InvalidCertificateTest.*) 上,以及全域 (testShadowDomFindElement、元素螢幕截圖測試) 重新啟用先前不穩定的整合測試。暫時將不穩定的 css/css-scrollbars/ WPT 測試從無頭殼層移回內容殼層 (crrev.com/c/5953708、crrev.com/c/5948803、crrev.com/c/5941351、crrev.com/c/5941098、crrev.com/c/5959254、Bug: 42323825、Bug: 40848017、Bug: 40736504、Bug: 40176424、Bug: 40927590)。
內部變更和重構
BiDi:調升 chromium-bidi 對應器依附元件,納入最新的上游修正和通訊協定更新 (crrev.com/c/5953339、crrev.com/c/5865478、Bug: 4226)。(注意:由於 WPT 失敗,對應器凸塊曾短暫還原,隨後重新著陸 (crrev.com/c/5961113))。
架構:盡量減少 ChromeDriver 中執行緒本機工作階段物件的使用量,避免測試之間發生狀態共用錯誤,並簡化明確的工作階段處理程序 (crrev.com/c/5978486、錯誤:42323555)。重構 C++ 整合測試,改用共用的測試固定裝置 (crrev.com/c/5971474、Bug: 42323555)。
清除:移除「舊版無頭」模式專用的已淘汰變通方法,因為 Chrome 中已不再有舊版 chrome-headless-shell 程式碼 (crrev.com/c/5961602、錯誤:42323387)。
清除:移除未使用的 java_tests.txt 檔案,這是先前遭驅逐的 ChromeDriver 接受測試所留下的殘餘項目 (crrev.com/c/5970994、錯誤:357737793)。
測試:新增 C++ 整合測試,確認 ChromeDriver 不會錯誤地建立具有相同 user-data-dir 的平行工作階段,或在工作階段之間洩漏網址,這可能會導致不穩定 (crrev.com/c/5961137、錯誤:375312517)。
測試:確保整合測試啟動的暫時性 ChromeDriver 執行個體會盡快關閉,以釋放資源 (crrev.com/c/5997970、Bug: 375974725)。
ChromeDriver 131
新功能
BiDi:將 chromium-bidi 對應器依附元件升級至 v0.8.0,納入最新的通訊協定更新和錯誤修正 (crrev.com/c/5899240、crrev.com/c/5865478、錯誤:4226)。
DOM 存取:在 GetElementShadowRoot 指令中新增對封閉陰影根的支援。先前,嘗試存取已關閉的陰影根時,這項指令會傳回 NoSuchShadowRoot 錯誤 (crrev.com/c/5923865、Bug: 372834222)。
DOM 存取權:實作視窗和影格 ID 的支援功能,允許從執行的指令碼傳回視窗或影格 (包括 OOP Iframe) 的參照,以供進一步取消參照 (crrev.com/c/5890437、crrev.com/c/5923555、Bug: 366272556、Bug: 40229283)。
WebAuthn:擴充 WebAuthn 自動化 API,加入 userName 和 userDisplayName 屬性 (crrev.com/c/5905423、錯誤: 367915823)。
修正錯誤
輸入:將滑鼠事件轉送至目標頁框的最高同源祖系,而非只是傳送至最上層頁框,修正遠端頁框上滑鼠點擊的競爭狀況 (crrev.com/c/5836968,錯誤:42323535)。
輸入:將 Input.dispatchTouchEvent 指令傳送的時間戳記格式從毫秒修正為秒,修正 WPT 指標事件測試中的當機問題 (crrev.com/c/5924253、錯誤:360918166)。
測試:在 Mac (crrev.com/c/5923569、crrev.com/c/5922823、crrev.com/c/5921444、crrev.com/c/5920851、crrev.com/c/5921442) 和 Windows (crrev.com/c/5923955) 上重新啟用多項 ChromeDriver 測試,因為相關的測試失敗問題已無法重現。
內部變更和重構
記憶體安全 (範圍化):在 net::HttpUtil 中以 base::span 取代不安全的指標用法 (crrev.com/c/5854420),並將 base::File::WriteAtCurrentPos() 遷移至以範圍為基礎的對等項目 (crrev.com/c/5818972)。重新編寫地圖指標值 (例如 std::map、std::unordered_map 中的值) 至 raw_ptr (crrev.com/c/5867189、錯誤:329428315)。
C++ 標準:以標準 base/ 巨集 (crrev.com/c/5852373) 取代 Abseil 屬性巨集 (ABSL_ATTRIBUTE_*)。將以值傳遞的字串/向量替換為 std::string_view 或適當的常數參照,並從 std::string_view 引數中移除多餘的 const 限定符,避免發生非預期的複製作業 (crrev.com/c/5914620、crrev.com/c/5906184、Bug: 369952985)。
基礎架構:設定 Fuchsia 使用 ChromeDriver 控制 web-engine (crrev.com/c/5867896、錯誤:40935291)。
測試:將受限框架 WebAuthn 測試從舊版內容殼層執行器遷移至無頭 Chrome (使用 ChromeDriver),因為舊版執行器即將停止支援 WebAuthn testdriver API (crrev.com/c/5920770、錯誤:372169469)。
ChromeDriver 130
新功能
BiDi:調升 BiDi 對應器依附元件,從上游 chromium-bidi 擷取最新通訊協定更新和錯誤修正 (crrev.com/c/5850570、還原後重新登陸 crrev.com/c/5837065 crrev.com/c/5840080;crrev.com/c/5717956、錯誤:4226)。
BiDi:更新 ChromeDriver,在初始化 BiDi 工作階段時,透過 session.new 指令直接將 unhandledPromptBehavior 提供給對應程式。這項異動完成後,系統就不會再使用 MapperOptions (crrev.com/c/5682934、crrev.com/c/5766077、Bug: 42323841、Bug: 356371297)。
測試:為桌機建構作業的 bisect-builds.py 指令新增 --chromedriver 引數支援,讓指令在 WebDriver/ChromeDriver 相關測試的二分搜尋期間,自動下載並使用正確版本的 ChromeDriver (crrev.com/c/5861048、錯誤:352344089)。
內部變更和重構
C++ 標準:解決各種類別中的「五項規則」問題。由於 Chrome 樣式外掛程式堅持使用行外解構函式,但未強制使用行外移動建構函式,編譯器會隱含刪除移動運算子,並自動改用副本。已新增這些缺少的宣告 (crrev.com/c/5846757、Bug: 364788123)。
測試:將硬式編碼的 chrome 字串替換為實際使用的產品,並從摘要輸出中隱藏詳細的 command 構件,藉此清除 wptrunner 測試結果摘要 (crrev.com/c/5825633、Bug: 41494889)。
測試:在 macOS 15 (Mac15) 上,將特定逾時時間加倍,修正 ChromeDriver 整合測試中大量測試失敗的問題,因為這個作業系統上的測試所需時間比 Mac14 長得多。此外,由於不穩定,四項虛擬感應器測試也已加入忽略清單 (crrev.com/c/5817455、Bug: 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、Bug: 357737793)。
ChromeDriver 129
新功能
BiDi:更新 ChromeDriver 工作階段初始化輔助程式,將 session.new 指令傳送至 BiDi 對應程式,讓對應程式直接處理功能。這是移除 MapperOptions 的第一步 (crrev.com/c/5741432、錯誤:356371297)。(附註:由於測試涵蓋率下降,因此提供已處理 unhandledPromptBehavior 的相關變更 crrev.com/c/5754093 已還原 crrev.com/c/5755744)。
運算壓力:新增虛擬壓力來源管理擴充指令,實作運算壓力規格的「自動化」部分。這些指令會經過剖析,並轉送至 CDP 層 (crrev.com/c/5666583、錯誤:347031400)。
擴充功能 MV2:更新了運用 MV2 行為的測試,以使用 ScopedTestMV2Enabler,這是持續進行的擴充功能 Manifest V2 淘汰計畫現場測試的一部分 (crrev.com/c/5685054、Bug: 339061151)。
修正錯誤
傳統序列化:在 WebDriver Classic 指令碼執行結果中序列化 Set 時,追蹤所見物件,避免無限迴圈並容許覆寫 Array.prototype.includes (crrev.com/c/5765833、Bug: 357472850)。(注意:由於 WPT 迴歸,這項變更隨後已還原 crrev.com/c/5773175)。
內部變更和重構
BiDi:調升 BiDi 對應器依附元件,納入 chromium-bidi 的最新錯誤修正和通訊協定更新 (crrev.com/c/5756587、crrev.com/c/5717956、錯誤:4226)。
記憶體安全 (範圍化):以 base::span 取代 WebSocketFrameParser::Decode、MaskWebSocketFramePayload 和 WriteWebSocketFrameHeader 中的不安全緩衝區用法 (crrev.com/c/5764863、crrev.com/c/5743019、crrev.com/c/5722108、錯誤:40284755、錯誤:354307327)。新增 #pragma allow_unsafe_buffers 跨 chrome/*,為進一步修正做準備 (crrev.com/c/5717950、Bug: 40285824),並將不符規定的 UNSAFE_BUFFERS() 巨集轉換為 UNSAFE_TODO() (crrev.com/c/5786346)。將 base::span 欄位重新編寫為 base::raw_span (crrev.com/c/5515096、錯誤:332587642)。
C++ 標準:在程式碼集明確將陣列長度標示為 constexpr,藉此移除危險的可變長度陣列 (VLA) (crrev.com/c/5738737、錯誤:349656479)。包含先前以遞移方式提取的必要
架構:還原 WebSocketEncoder 實作項目,取消其遷移至 //services/network/public/cpp/server 的作業,並將邏輯集中在 //net/server 中,確保更新一致性 (crrev.com/c/5768214、Bug: 40205564)。
ChromeDriver 128
新功能
功能:允許使用 unhandledPromptBehavior 功能的字典,與標準功能結構保持一致,但 Mapper 尚未完全遵守 (crrev.com/c/5692204、crrev.com/c/5682934、Bug: 42323841)。
啟動:在 ChromeDriver 中新增 --ignore-explicit-port 命令行引數。這項暫時的解決方法會強制 ChromeDriver 忽略任何明確提供的連接埠,改為尋找並繫結至可用連接埠,解決網頁平台測試執行期間的 TCP 連接埠競爭問題 (預計在 M132 後移除) (crrev.com/c/5724574、crrev.com/c/5703976、Bug: 42323836)。
修正錯誤
感應器:修正 ExecuteUpdateVirtualSensor 指令,改用 SendCommand() 而非 SendCommandAndGetResult(),因為 setSensorOverrideReadings CDP 指令不會傳回值 (crrev.com/c/5703589)。
FedCM:修正 FedCM ChromeDriver 測試中的競爭狀況,不再斷言系統會在實際預期對話方塊時傳回 NoSuchDialog,避免對話方塊顯示過快時發生失敗 (crrev.com/c/5713515、錯誤:346530330)。
測試:修正基礎問題 (crbug.com/40233722) 後,重新啟用 Mac 上的 WebAuthn 虛擬驗證器測試 (crrev.com/c/5635806、Bug: 329130177)。
錯誤訊息:修正 execute/async 指令錯誤訊息中的錯字 (crrev.com/c/5697913)。
內部變更和重構
BiDi:調升 BiDi 對應器依附元件,從上游 chromium-bidi 專案導入最新通訊協定功能、修正錯誤,以及更新 WPT 期望 (crrev.com/c/5717956、crrev.com/c/5644823、crrev.com/c/5630727、crrev.com/c/5615110、crrev.com/c/5614670、錯誤:4226、錯誤:347863537、錯誤:324436866)。
以 span 取代已淘汰的 GrowableIOBuffer::StartOfBuffer 方法,並消除未檢查的指標,提升記憶體安全性 (crrev.com/c/5706088、Bug: 329476354)。
Spanified the Decode methods of WebSocketFrameParser to improve memory safety (crrev.com/c/5722108, Bug: 354307327)。
移除過時的 Abseil 標頭,並遷移至 std::optional,以清除 absl::optional 的其餘殘餘部分 (crrev.com/c/5691505、Bug: 40242125)。
變更 ChromeDriver,將所有不明目標類型 (包括 shared_storage_worklet) 視為 WebViewInfo::kOther,而非錯誤。這樣一來,Chrome 就能導入新的目標類型,而不會立即中斷 WPT (crrev.com/c/5680542、crrev.com/c/5679146、Bug: 42323839)。
為 linux-builder-perf 建構工具新增安裝程式目標,以便為二分搜尋封存檔產生符號已移除的二進位檔,並設定精確定位建構工具接受不同的 additional_compile_targets (crrev.com/c/5668198、Bug: 344643694)。
更新 run_performance_tests.py,在效能建構期間尋找 ChromeDriver 位置並傳遞至 crossbench (crrev.com/c/5624538,錯誤:338629299)。
推出 crossbench 依附元件 (crrev.com/c/5681849)。
在 Mac 上將 FedCmSpecificTest.testClickErrorMoreDetails 和 FedCmSpecificTest.testClickErrorGotIt 標示為不穩定 (crrev.com/c/5704320、crrev.com/c/5677564、Bug: 352821422、Bug: 346530330)。
已停用不穩定的 BidiTest.testFocusInFirstTab 測試 (crrev.com/c/5676686、錯誤:350916212)。
ChromeDriver 127
修正錯誤
穩定性:修正 ChromeDriver 當機問題。當開發人員工具用戶端正在處理其他指令時,如果收到 target.detachFromTarget 指令 (或 target.detachedFromTarget 事件),就會發生這個問題。修正後,系統不會過早釋出 WebView 和 DevToolsClient 物件 (crrev.com/c/5527584、錯誤:339773537)。
穩定性:修正了在執行 Switch To Window 指令期間,如果網頁檢視區塊分離,指令可能會錯誤傳回「不明錯誤」的問題。現在,如果目標視窗確實已關閉,系統會正確忽略「找不到網頁檢視區塊」的內部錯誤,並傳回標準的「沒有這類視窗」回應 (crrev.com/c/5583730、錯誤:338616700)。
穩定性:確保 ChromeDriver 在更新內部 WebView 清單時,可容許目標分離。如果目標在更新期間卸離,ChromeDriver 現在會重試,而不是傳回非標準錯誤,減少快速建立及銷毀視窗的環境中發生的不穩定情況 (crrev.com/c/5565103、Bug: 338616700、Bug: 4771)。
導覽:在搜尋元素時,ChromeDriver 新增了等待遠端偵測到導覽的邏輯。這可防止 ChromeDriver 在導覽與元素尋找作業 (crrev.com/c/5563113、還原 crrev.com/c/5563420、重新發布 crrev.com/c/5562089、錯誤: 4771) 同時發生時,傳回非標準錯誤或因 DCHECK 而當機。
BiDi:修正工作階段建立期間 ChromeDriver 和 BiDiMapper 之間的競爭狀況。ChromeDriver 現在會等待 browsingContext.getTree 指令傳回非空白清單,再結束 NewSession 指令,確保新建立的預設分頁正確註冊 (crrev.com/c/5575497、Bug: 341048786、Bug: 1503101)。
BiDi:修正問題。在工作階段建立後,焦點會停留在 BiDiMapper 背景分頁,而非使用中的使用者分頁。現在系統會明確將焦點授予第一個使用者分頁 (crrev.com/c/5594070、Bug: 341048786、Bug: 1503101)。
BiDi:停止 ChromeDriver 在處理 BiDi 指令 (例如 browsingContext.close) 時嘗試附加目標,避免 CDP 指令在使用者提示開啟時無限期停滯,並將處理作業完全委派給已連線的 BiDi 層 (crrev.com/c/5541915、還原 crrev.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、Bug: 340956654)。
測試:如果 run_py_tests.py 無法找到瀏覽器二進位檔,ChromeDriver 整合測試會列印嘗試的路徑,藉此改善診斷程序 (crrev.com/c/5604204、錯誤:4781)。
內部變更和重構
BiDi:調升 BiDi 對應器依附元件,與最新的通訊協定更新和錯誤修正保持一致 (crrev.com/c/5614670、crrev.com/c/5593796、crrev.com/c/5537892、crrev.com/c/5471839、錯誤:4226)。
為準備將 NOTREACHED() 設為嚴格 [[noreturn]],已將 chrome/ 目錄中 NOTREACHED() 的用法替換為 NOTREACHED_IN_MIGRATION() (crrev.com/c/5539004、錯誤:40580068)。
使用 licenses.py 工具為 ChromeDriver 產生 THIRD_PARTY_NOTICES.txt,以符合發布規定 (crrev.com/c/5596355、Bug: 4777)。
移除 run_wpt_tests.py 支援,因為 Chromium 的 WPT 涵蓋範圍已完全轉移至 headless_shell + ChromeDriver (crrev.com/c/5589930)。content_shell重新整理 wptrunner 切換開關,使其成為嵌入器專屬,以配合這項變更,且不會影響功能 (crrev.com/c/5589793、錯誤:338412391)。
將 JavaScript 對話方塊偵測和處理邏輯從 JavaScriptDialogManager 直接移至 DevToolsClientImpl,並移除個別管理員類別,簡化測試和推論程序,藉此整合相關邏輯 (crrev.com/c/5545630、Bug: 4757)。
由於不穩定,已在 Mac 上停用 PureBidiTest.testBrowsingContextTreeIsNotEmpty (crrev.com/c/5588665、Bug: 343891977)。
更新 BiDi WPT 預期結果,以因應最近的對應程式更新 (crrev.com/c/5615110、Bug: 4226、Bug: 324436866)。
為 WebView::SendBidiCommand 和 BidiTracker 新增單元測試,以提高程式碼涵蓋率 (crrev.com/c/5588400、Bug: 341048786、Bug: 1503101)。
ChromeDriver 126
新功能
BiDi:更新 ChromeDriver,在啟動瀏覽器以進行 WebDriver BiDi 工作階段時提供 --disable-background-timer-throttling 切換,防止背景分頁遭到節流 (crrev.com/c/5515013、錯誤:4762)。
BiDi:新增 BiDi 對應器支援功能,可在需要詳細記錄時傳送偵錯訊息 (sendDebugMessage)。ChromeDriver 會將這些事件標示為 bidi messages 以進行剖析,但 BidiTracker 目前會忽略這些事件 (crrev.com/c/5465782、錯誤:4753)。
傳統版:實作自動接受任何 beforeunload 對話方塊 (快訊),遵守 WebDriver 標準,該標準規定對話方塊絕不能顯示在傳統版工作階段中 (crrev.com/c/5517510、錯誤:4757)。
修正錯誤
傳統:移除元素擷取邏輯中多餘的嘗試次數上限限制。現在擷取作業只受隱含逾時限制,可避免作業過早失敗,並錯誤地傳回非標準的 NoSuchExecutionContext 錯誤 (crrev.com/c/5478668、Bug: 4379)。
傳統版:修正回歸問題,這個問題會導致 ChromeDriver 在擷取要求使用無效的位置策略時,傳回 javascript error 而非 invalid selector 錯誤 (crrev.com/c/5490662、錯誤: 4743)。
傳統:確保 Android 上的視窗指令 (最大化、最小化、全螢幕) 會傳回符合標準的 unsupported operation 錯誤,而不是繼續執行,因為 Android 瀏覽器不支援這些動作 (crrev.com/c/5490224、錯誤:4689)。
傳統版:修正 ChromeDriver,使其絕不會傳回 kChromeNotReachable 內部錯誤代碼;現在當 HTTP 用戶端無法連線至瀏覽器時,系統會正確傳回標準 kSessionNotCreated 錯誤 (crrev.com/c/5476390、錯誤:4379)。
傳統:修正 ChromeDriver,確保執行視窗指令時不會傳回非標準 kNoSuchExecutionContext 錯誤 (crrev.com/c/5483606、Bug: 4379)。
傳統版:從支援的錯誤代碼清單中,移除未使用的 kForbidden 錯誤代碼 (crrev.com/c/5476927、錯誤:4379)。
BiDi:更新 ChromeDriver,在關閉專屬 Mapper 分頁前提示使用者,與上游 chromium-bidi 變更保持一致 (crrev.com/c/5508600、Bug: 4761)。
內部變更和重構
BiDi:調升 BiDi 對應器依附元件,從上游 chromium-bidi 專案導入最新功能和錯誤修正 (crrev.com/c/5490428、crrev.com/c/5471839、crrev.com/c/5509316、crrev.com/c/5458234、錯誤:4226)。(注意:園丁曾短暫還原對應器升級,然後重新登陸 (crrev.com/c/5374839、crrev.com/c/5374366))。
在 //chrome 中,將 base::StringPiece 的用法替換為 std::string_view (crrev.com/c/5467746、Bug: 40506050)。
移除 //chrome 中的 std::to_string() 用法,並替換為 base::NumberToString() 或 base::FormatNumber() (crrev.com/c/5505593、錯誤:335672557)。
舊版無頭模式已移除 --remote-debugging-address 切換支援,因為不受保護的 Chrome 開發人員工具通訊協定遠端存取權過於危險 (crrev.com/c/5512634、錯誤:327558594)。
從 //chrome 中移除 Fuchsia 建構規則,但 ChromeDriver 除外 (crrev.com/c/5473870、Bug: 41481724)。
將程式碼集中的舊版 TODO(crbug.com/...) 參照項目遷移至新的問題追蹤器 ID 格式 (TODO(b/...)) (crrev.com/c/5492605、crrev.com/c/5486477、crrev.com/c/5461380、Bug: 321899722)。
由於底層錯誤複雜,因此停用 Mac 上的 WebAuthn (驗證器) 測試 (包括無頭和 chromedriver_py_tests),解除機器人升級至 macOS 14 的封鎖 (crrev.com/c/5525435、crrev.com/c/5518820、Bug: 329130177)。
由於難以同時使用 ChromeDriver 和 Content Shell 執行 WPT,因此已停用 content_shell 的 WPT 建構工具 (crrev.com/c/5512439、錯誤:40214293)。
重新登陸一項變更,更新 focus-navigation WPT,透過 test_driver.action_sequence() 使用 Shift+Tab 進行返回瀏覽。修正 focus-utils.js 的錯誤,該錯誤會導致 Shift 鍵使用錯誤的鍵碼 (E050 而非 E008) (crrev.com/c/5467843、還原 crrev.com/c/5466531、重新登陸 crrev.com/c/5463903、Bug: 40597271)。
在效能建構目標中新增 crossbench 和 chromedriver (crrev.com/c/5521874、Bug: 338627700)。
ChromeDriver 125
新功能
裝置姿勢:新增裝置姿勢管理用的 ChromeDriver 指令,支援裝置姿勢規格的「自動化」部分。這樣即可透過擴充功能指令,覆寫硬體設定的裝置姿勢並移除覆寫 (crrev.com/c/5437993、Bug: 330376761)。
修正錯誤
BiDi:將傳入 BiDi 指令 id 的中繼儲存空間從 Double 變更為 base::Value。這樣可確保 id 會在回應中精確回傳,不會在 JSON 序列化後出現非預期的尾隨小數點或小數部分 (crrev.com/c/5444225、錯誤:4676)。
FedCM:在 IDP 準備就緒後,重新啟用 ID 聲明端點的 CORS (crrev.com/c/5440132,還原 crrev.com/c/5381316,重新啟用 crrev.com/c/5370086,錯誤:40284123)。
FedCM:修正對話方塊遭誤標為已關閉的錯誤,確保只有在 selectAccount 指令成功時,對話方塊才會標示為已關閉。這項變更可解決在沒有預期帳戶選擇器時呼叫 selectAccount 導致的測試失敗問題 (crrev.com/c/5398379、Bug: 331237776)。避免在不應顯示帳戶選擇器時呼叫 fedcm_get_and_select_first_account,防止觸發這個錯誤 (crrev.com/c/5398800)。
測試:修正 popover-light-dismiss.html WPT 測試中的失敗問題,方法是合併動作序列,並將主要頁框的文件做為 pointerUp 動作的來源,防止 ChromeDriver 在頁框間錯誤地傳送並行 pointerUp 事件 (crrev.com/c/5402096、錯誤:325981758)。
測試:修正 wptrunner,將 stderr 輸出內容 (包括使用 --enable-chrome-logs 時寫入的瀏覽器記錄) 正確轉送至 stderr 構件,而非 crash_log,並將包含瀏覽器堆疊追蹤記錄的 Harness 錯誤移至 crash_log (crrev.com/c/5437023、錯誤:41494889)。
測試:修正 wptrunner,將瀏覽器記錄檔依 ChromeDriver 程序分組輸出,並將記錄檔導向正確的測試構件,避免在平行測試執行時出現交錯和孤立的記錄檔 (crrev.com/c/5320681、錯誤:41494889)。
內部變更和重構
BiDi:更新 BiDi 對應程式依附元件,整合最新的通訊協定強化功能和錯誤修正 (crrev.com/c/5433300、crrev.com/c/5393442、錯誤:4226)。(注意:先前的升級 crrev.com/c/5374366 已還原 crrev.com/c/5374839,隨後重新登陸,並停用不穩定的測試和更新授權 crrev.com/c/5374914)。
診斷:將 Chrome 的 StackTrace 納入 ChromeDriver 例外狀況。如果網頁/分頁當機 (例如 Mac 上的懸空指標),導致工作階段遭到刪除,系統會在錯誤訊息中顯示瀏覽器堆疊追蹤,大幅提升偵錯能力 (crrev.com/c/5374371、Bug: 330009945)。
測試:暫時停用 Mac 上不穩定的 testTakeLargeElementViewportScreenshot 整合測試 (具體來說是 mac-arm64) (crrev.com/c/5447515、Bug: 333826980)。
測試:更新測試環境 (CEL) 中的 ChromeDriver 啟動引數,以符合 Selenium 4 以上的語法 (crrev.com/c/5448812、錯誤:308885357)。
測試:從 chromedriver 記錄中擷取用於執行各項 WPT 測試的確切 chrome 指令列,並存入名為 command 的 ResultDB 構件。這有助於使用 run_blink_wptserve.py 手動偵錯 (crrev.com/c/5441189、Bug: 41494889)。
依附元件:從 selenium-atoms 依附元件清單中移除 Closure,因此也從 ChromeDriver 的第三方通知中移除 (crrev.com/c/5424804、錯誤:4226)。
依附元件:在基本存放區中捨棄未使用的依附元件 (dynamic_annotations) (crrev.com/c/3398908、Bug: 1282422)。
格式:對有問題的 Windows 標頭套用新的 clang-format 設定 (crrev.com/c/5367127、錯誤:329138753)。
ChromeDriver 124
新功能
BiDi:新增建構步驟,在將 BiDiMapper 指令碼嵌入 ChromeDriver 之前先縮減該指令碼,因為來源對應器現在會從 CIPD 下載未縮減的指令碼 (crrev.com/c/5310075、錯誤:4226)。
WebAuthn:新增 SetCredentialProperties 指令,讓用戶端更新 WebAuthn 憑證的備份旗標 (crrev.com/c/5296389、Bug: 40945430)。
WebAuthn:透過 WebDriver 將 defaultBackupEligibility 和 defaultBackupState 新增至「新增虛擬驗證器」指令,並將 backupEligibility 和 backupState 新增至「新增憑證」指令,公開 WebAuthn 備份旗標 (crrev.com/c/5297117、Bug: 40945430)。
測試:為 ChromeDriver Python 整合測試新增 --failfast 指令列引數的支援功能,在發生第一個錯誤時停止測試執行,協助進行偵錯 (crrev.com/c/5374546)。
測試:透過 testdriver-vendor.js API 新增對 SetRPHRegistrationMode webdriver 指令的內容殼層支援 (crrev.com/c/5205730、錯誤:1359103)。
修正錯誤
穩定性:將逾時到期檢查移至 ChromeImpl::SetWindowBounds 的輪詢和等待迴圈主體內。修正高負載時,逾時可能在第一次迴圈疊代發生前到期的問題 (crrev.com/c/5366899、Bug: 4642)。
效能:如果視窗界線尚未達到所需狀態,則只會套用指數輪詢等待時間,藉此縮短 ChromeImpl::SetWindowBounds 中的等待時間,並減少 WPT 設定延遲 (crrev.com/c/5366457、錯誤:4642)。
啟動:更新 ChromeDriver,在指定 content_shell 的資料目錄時使用 --user-data-dir 而非 --data-path,與讀取有效開發人員工具通訊埠的方式一致 (crrev.com/c/5226609、錯誤:1295373)。
內部變更和重構
BiDi:調升 BiDi 對應器依附元件,擷取最新的通訊協定修正和功能 (crrev.com/c/5374366、crrev.com/c/5349491、crrev.com/c/5317650、錯誤:4226)。(注意:由於測試失敗,因此短暫還原並重新發布了版本 crrev.com/c/5374839、crrev.com/c/5368680、crrev.com/c/5319423)。
在程式碼庫中,將 absl::optional 的用法替換為 std::optional,因為 absl::optional 已轉換為型別別名 (crrev.com/c/5296147、錯誤: 1500249)。
將 MiraclePtr (raw_ptr) 涵蓋範圍擴展至其他標準容器,包括 std::list、std::unordered_set、base::flat_set、std::stack 和 std::queue (crrev.com/c/5306923、Bug: 325302189)。
已轉換為使用 base::numerics 位元組轉換或 BigEndianWriter (現在接受 base::span),提升寫入大端序位元組時的安全性 (crrev.com/c/5202348、Bug: 1490484)。WriteBigEndian()
改用 ChromeDriver 執行 Web Platform Tests (WPT) (不含虛擬測試和待上游修正錯誤的 reftest) (crrev.com/c/5347371、Bug: 40214293)。content_shell
將所有現有的 Generic Sensor 網頁測試轉換為使用 test_driver.js 和虛擬感應器,而非 JS/Mojo 模擬,與 Generic Sensor 規格的新自動化部分保持一致 (crrev.com/c/4770867、錯誤: 1278377、錯誤: 1471996)。
新增 append_notices.py,為 BiDiMapper 依附元件產生出處資訊,並更新 licenses.py 呼叫,嚴格依據 selenium-atoms README 提供第三方通知,藉此改善授權產生作業 (crrev.com/c/5350601、crrev.com/c/5339957、Bug: 4729、Bug: 4735)。
ChromeDriver 123
新功能
FedCM:顯示單一帳戶按鈕流程的強制回應對話方塊,包括在自動化介面中新增強制回應檢視畫面支援 (crrev.com/c/5231438、Bug: 1518356)。
FedCM:實作 ChromeDriver 支援功能,可在 FedCM 對話方塊中開啟連結,並將連結視為按鈕,簡化自動化作業 (crrev.com/c/5225543、Bug: 1513520)。
感應器:修改 WebDriver 虛擬感應器指令,讀取 Euler 角 (alpha-beta-gamma) 而非四元數,以符合最新的方向感應器規格更新。內部 CDP 和服務層仍會透過轉換步驟使用四元數 (crrev.com/c/5229177、Bug: 1506995、Bug: 1520912、Bug: 1520919)。
修正錯誤
傳統版:修正透過指令碼從不同頁框傳回節點時,會錯誤導致 StaleElementReference 錯誤的問題。現在會正確傳回 JavaScriptError,以符合 WebDriver 標準 (crrev.com/c/5222746、Bug: 4668)。
測試:修正 Chrome/ChromeDriver 上失敗的過度捲動事件測試,因為觸控拖曳超出視窗邊界;現在拖曳作業會受到適當限制 (crrev.com/c/5297676、錯誤:40832230)。
測試:修正 open-close.https.html MIDI 測試,避免不必要地建構 promise,以免發生未處理的 promise 拒絕,導致 ChromeDriver 無法通過測試 (crrev.com/c/5239869、錯誤: 1499775)。
測試:修正 wpt_internal/system-wake-lock/idlharness* 測試中設定的權限集,因為 test_driver.set_permission(...) 錯誤地傳遞 false 而非 null 或 WindowProxy,導致 ChromeDriver 混淆 (crrev.com/c/5271087、錯誤:40287920)。
內部變更和重構
BiDi:調升 BiDi 對應器依附元件,擷取最新修正內容和功能 (crrev.com/c/5205452、crrev.com/c/5255321、crrev.com/c/5238148、crrev.com/c/5237125、錯誤:4226)。(注意:由於建構失敗 crrev.com/c/5238855,因此短暫還原並重新套用升級)。
在 ChromeImpl 和 DevToolsClientImpl 中,從基礎類別到衍生類別,消除不安全的靜態轉換,防止潛在的未定義行為,進而提升 ChromeDriver 程式碼的健全性 (crrev.com/c/5277062、crrev.com/c/5272562、Bug: 4702)。
在 WebViewImpl 中淘汰不安全的轉換 (crrev.com/c/5272230、Bug: 4702)。
已移除已淘汰的 base::Base64Encode() 形式,並遷移至較新的 std::string 回傳變數,而非使用輸出參數 (crrev.com/c/5179900、crrev.com/c/5246585、Bug: 1486214)。
更新 base/... 的所有 #include 指令,改用 "" 而非 <>,以確保一致性 (crrev.com/c/5237376、錯誤:1500249)。
已將 chrome/test/ 中的所有 DIR_METADATA 檔案遷移至 Buganizer (crrev.com/c/5284119,Bug:1518875)。
傳遞 -vvv 時,wptrunner 不會再建立本機 - 檔案,因為 stderr 已重新導向至 stdout (crrev.com/c/5282721),因此已移除不必要的 chromedriver --log-path=- 切換。
強化 wptrunner,在發生迴歸時總結測試結果,並在摘要輸出中明確納入子測試結果和 ChromeDriver 堆疊追蹤 (crrev.com/c/5238662、Bug: 1521922)。
導入 --remote-chromedriver-port 參數至 run_py_tests.py,可連線至在偵錯工具下執行的現有執行個體,簡化 ChromeDriver 整合測試的偵錯作業 (crrev.com/c/5237254、Bug: 4693)。
避免使用雙引數 base::HexEncode() 和 RandBytes() 呼叫,讓編譯器推斷正確大小,簡化程式碼 (crrev.com/c/5241357)。
ChromeDriver 122
修正錯誤
BiDi:更新了深層節點序列化,納入 loaderId,讓 ChromeDriver 和 BiDi 對應程式能正確參照及取消參照節點,不必進行過多的往返行程 (crrev.com/c/5116240、Bug: 1420968)。
功能:更新 ChromeDriver,在啟動時立即將 acceptInsecureCerts 功能傳遞至 BiDi 對應器,避免功能套用時間過晚而導致競爭條件 (crrev.com/c/5125711、錯誤:4643)。
傳統:重新架構元素參照產生作業,改用
傳統:修正問題:如果新建立的目標在 ChromeDriver 附加至該目標之前自行關閉 (例如在競爭狀況中),window/handles 指令可能會失敗並顯示「no such window」錯誤 (crrev.com/c/5147409、錯誤:1506833)。
FedCM:新增內部事件監聽器,在 FedCM 對話方塊關閉時發出通知,避免對話方塊從外部關閉 (例如透過 AbortController.abort) 時,dialogtype 指令傳回過時資料 (crrev.com/c/5067504、錯誤:1506292)。
FedCM:已從 ClickDialogButton 指令中移除供應商前置字元,因為這項指令已在 FedCM 規格中獲得核准 (crrev.com/c/5092527、Bug: 1499341)。
內部變更和重構
BiDi:將 BiDi Mapper 依附元件升級至最新版本 (crrev.com/c/5205452,錯誤:4226)。
移除從每個 DevToolsEventListener 傳送的多餘 Page.enable 呼叫,減少 ChromeDriver 和 Chrome 開發人員工具通訊協定 (CDP) 的流量,因為 DevToolsClientImpl 已處理每個目標的這項作業 (crrev.com/c/5088789、錯誤:4600)。
由於目前尚不完全支援在通訊協定模式下執行測試,且 ChromeDriver 整合作業仍在進行中 (crrev.com/c/5225148、Bug: 1474702),因此所有 Wptrunner 建構工具都已變更為實驗狀態。content_shell
略過 content_shell 上需要 window.test_driver_internal.get_computed_role 的測試,因為尚未實作,可避免 TypeError 失敗 (crrev.com/c/5189678、Bug: 1517744)。
重新登陸重構,改用與平台無關的 IS_OZONE_{X11, WAYLAND} 標記,而非 OZONE_PLATFORM_* (crrev.com/c/5086329、Bug: 1500494)。
將 selenium-atoms 依附元件升級至最新修訂版本 (crrev.com/c/5110808、Bug: 4662)。
修正針對完整 Chrome 二進位檔執行時,SnapEvents 測試中的邏輯,方法是將指標移動輸入內容四捨五入、強制執行捲動的 origin 參數,以及使用近似值判斷 (assert_approx_equals) 處理分數捲動/位移差異 (crrev.com/c/5097343)。
新增 StringPrintfNonConstexpr() 輔助程式,在格式字串不是編譯時間常數時,與 StringPrintf() 區別 (crrev.com/c/4950568、Bug: 1371963)。
確保 chromium::import! Rust 巨集逸出使用單射函數,避免在產生的 GN 目標名稱中發生衝突 (crrev.com/c/5132119、Bug: 1512174)。
在解構函式中新增建構函式和提早回傳,藉此清理 ScopedTempDirWithRetry 實作項目 (crrev.com/c/5113843)。
ChromeDriver 121
新功能
測試:除了建構機器上的標準 Chrome 瀏覽器,現在也支援對 chrome-headless-shell 執行 ChromeDriver 整合測試 (chromedriver_py_test)。包括根據 --browser-name 參數探索瀏覽器二進位檔,以及有條件地執行特定測試集 (crrev.com/c/4995189、crrev.com/c/4989442、Bug: 4358)。
修正錯誤
穩定性:將預設 KeyboardLayoutEngine 初始化為 StubKeyboardLayoutEngine,避免因 KeyboardLayoutEngineManager::SetKeyboardLayoutEngine 中的 DCHECK 命中而導致 ChromeDriver 損毀 (crrev.com/c/5017859、錯誤:4625)。
穩定性:修正不穩定問題,如果用戶端已要求關閉連線,工作階段執行緒要求關閉相同連線時,ChromeDriver 可能會當機 (crrev.com/c/4994636、Bug: 4606)。
資源管理:修正 ChromeDriver 整合測試中的資源洩漏問題 (RemoteBrowserTest),確保即使 ChromeDriver 指令擲回例外狀況,瀏覽器程序也會終止 (crrev.com/c/5009554、Bug: 4614)。
資源管理:在 ChromeDriver 整合測試中實作邏輯,偵測並終止 ChromeDriver 程序捨棄的任何瀏覽器程序 (crrev.com/c/5014093、錯誤:4617)。
啟動:修正 chrome-headless-shell 會傳回空白目標清單的問題,防止工作階段建立,方法是在瀏覽器名稱為 chrome-headless-shell 時,將 data:, 引數附加至瀏覽器指令列 (crrev.com/c/5010392、crrev.com/c/5009535、Bug: 4615、Bug: 4358)。
FedCM:新增事件,在 FedCM 對話方塊關閉時通知,確保 dialogtype 和其他指令不會在對話方塊從外部關閉 (例如透過 AbortController.abort) 時傳回過時資料 (crrev.com/c/5067504、錯誤:1506292)。
測試:修正並重新啟用先前在 Windows 上為 chrome-headless-shell 停用的所有 ChromeDriver 整合測試 (crrev.com/c/5027594、錯誤:4358)。
測試:為符合 WebDriver 標準,已在 testElementRegionTest 中放寬過於嚴格的斷言,解決瀏覽器轉譯特殊性造成的不可靠問題 (crrev.com/c/5017865、錯誤:4526)。
內部變更和重構
BiDi:更新 BiDi Mapper 依附元件 (crrev.com/c/4994305、錯誤:4226)。
由於發生錯誤 (crrev.com/c/5086571,還原 crrev.com/c/5083096,錯誤:1500494),因此已將 IS_OZONE_{X11, WAYLAND} 的使用方式還原為 OZONE_PLATFORM_*。
將 commands_unittest.cc 中的程式碼遷移至使用 base::BindLambdaForTesting,而非已淘汰的 base::Passed (crrev.com/c/5078589、Bug: 1326449)。
重構 session.new,將樣板功能處理 (例如 testName、binary、browserName) 擷取至專用方法,並確保指令會以類似於傳統指令的方式尊重功能 (crrev.com/c/5004665、crrev.com/c/5001510、Bug: 4358、Bug: 4610)。
移除了已淘汰的 base/strings/string_piece_forward.h 標頭用法 (crrev.com/c/5008994、錯誤:691162)。
使用 net::IOBufferWithSize 處理擁有權案例,為 net::IOBuffer 轉移至非擁有權類別做好準備 (crrev.com/c/4996470、Bug: 1493389)。
導入並使用 base::RandBytesAsVector(),避免將二進位值儲存在字串中 (crrev.com/c/5018451)。
停用 Mac 上持續失敗的數項 Python 整合測試,避免因 LUCI 分析免責事項而導致建構作業通過 (crrev.com/c/4998771、Bug: 1486604、Bug: 1486520、Bug: 1486474、Bug: 1481915)。
將 webdriver_tests_suite (和 wpt_tests_suite) 重新命名為 chrome_wpt_tests,以便在 Linux 試用版建構工具上標準化 WPT 套件命名慣例 (crrev.com/c/5014293,錯誤:1474702)。
將 ConfirmIdpLogin FedCM webdriver 指令改為更具擴充性的 ClickDialogButton 指令,可接受 DialogButton 參數 (crrev.com/c/5003255、Bug: 1499341)。
更新 crossbench 依附元件,修正多項問題並新增多項功能,包括改善驅動程式類型剖析、網路存根和 iOS 支援 (crrev.com/c/5009937)。
為符合 IWYU 規定,在 chrome_finder.h 中新增缺少的 #include
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 對應器依附元件,並配合新的簡化對應器執行程序 (crrev.com/c/4952609,錯誤:4226)。
感應器:在 browser_protocol.pdl 和 CDP 層 (模擬網域) 中導入虛擬感應器指令,並支援通用感應器規格的「自動化」部分 (crrev.com/c/4770864、錯誤:1278377)。
感應器:新增虛擬感應器管理用的 ChromeDriver 擴充功能指令,將 WebDriver 參數轉換為新的 CDP 呼叫 (crrev.com/c/4770866、Bug: 1278377)。
感應器:新增透過 testdriver.js 操控虛擬感應器的 content_shell 程式碼路徑,完全略過網頁測試的 ChromeDriver (crrev.com/c/4770865、Bug: 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、Bug: 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++ 標準相容性:新增範圍檢查,修正 UBSan 偵測到的未定義行為 (UB),也就是將超出範圍的 double 轉換為 int 時發生的問題 (crrev.com/c/4980055、錯誤: 1394755)。
FedCM:移除舊版標頭語法的支援,確保符合標準 login-status-http 語法 (crrev.com/c/4957073、錯誤:1381501)。
內部變更和重構
新增 testReturnFrameElement 整合測試,驗證 ChromeDriver 對於將 window.frameElement 視為過時參照的行為 (crrev.com/c/4983549、Bug: 4477)。
改善記錄功能,確保 ChromeDriver 會記錄嘗試尋找瀏覽器二進位檔的特定路徑 (crrev.com/c/4976116、Bug: 4539)。
重新命名各種 base::Time 函式,使其更具描述性 (例如將 FromDoubleT() 重新命名為 FromSecondsSinceUnixEpoch()) (crrev.com/c/4956111)。
重構 net::StringIOBuffer 建構函式和 IOBuffer 例項,避免不必要的字串副本和零長度分配 (crrev.com/c/4938384、crrev.com/c/4959174)。
視情況將 base::StrCat 替換為 +,並使用 base::AppendHexEncodedByte(),簡化字串處理作業 (crrev.com/c/4963465、crrev.com/c/4977165)。
在 //chrome* 測試中,將 DIR_SOURCE_ROOT 重新命名為 DIR_SRC_TEST_DATA_ROOT,為求明確 (crrev.com/c/4916045、Bug: 1264897)。
在 Mac 建構工具上停用不穩定的 PureBidiTest 測試 (crrev.com/c/4983555、Bug: 1496826)。
ChromeDriver 119
新功能
BiDi:實作支援,可解析遠端函式呼叫期間,遠端端點傳回的弱本機物件參照 (crrev.com/c/4886760、錯誤: 4536)。
FedCM:新增了供應商前置字元 confirmidpsignin 指令,支援 IDP 登入狀態 API 來源試用 (crrev.com/c/4811725、Bug: 1451884)。
修正錯誤
行動裝置模擬:修正問題。如果預先定義的裝置沒有用戶端提示 (例如舊版設定),系統會填入合理的預設值,導致裝置無法正常運作 (crrev.com/c/4887254、錯誤:4550)。
傳統:修正 Map 和 Set 物件的序列化問題,現在這些物件會正確序列化為 Object,而非 Collection,因為這些物件缺少 length 屬性 (crrev.com/c/4881378、Bug: 4031)。
傳統:恢復一律在測試期間下載並使用最新相容版 ChromeDriver 的邏輯,只有在發生相容性問題時才改用特定版本 (crrev.com/c/4779613,還原 crrev.com/c/4778973)。
FedCM:將 Signin 重新命名為 Login (confirmidplogin),藉此標準化瀏覽器自動化指令,與最新的 FedCM 規格討論內容保持一致 (crrev.com/c/4901302、Bug: 1451884)。
測試:修正了在停用第三方 Cookie 時,導致 FedCM 測試失敗的問題,方法是在測試執行期間明確啟用 IDP 登入狀態 API (crrev.com/c/4889802、Bug: 1484833)。
測試:在測試執行器中,將無效的網址預留位置 ~NOTFOUND 替換為 ^NOTFOUND,以符合即將實施的 Chromium 網址標準變更 (crrev.com/c/4845589、錯誤:1416013)。
內部變更和重構
BiDi:將 BiDi Mapper 依附元件更新至 0.4.27 版,導入最新修正和功能 (crrev.com/c/4862031、crrev.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、Bug: 4031)。
透過 WebSockets 連線時,明確告知使用者系統支援管道,且建議使用管道以提升可靠性和安全性,加強使用者意見回饋 (crrev.com/c/4882626、錯誤:3480)。
更新 WPT 套件設定,以封存 results.html 測試,提供更優質的 UI 來查看結果 (crrev.com/c/4873223)。webdriver_tests_suite
將 WebView WebContents 標示為 popup_page,並將開發人員工具類型設為 popup_page,而非 other,修正開發人員工具與 WebView 的整合問題 (crrev.com/c/4842093)。
為保持一致性,將 WPT 建構目標 chrome_wpt 重新命名為 chrome_wpt_tests,並移除多餘的 webdriver_wpt_tests 目標 (crrev.com/c/4847474、錯誤:1474702)。
已將 run_py_tests.py 從已淘汰的 optparse 程式庫遷移至 argparse (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 通訊 (crrev.com/c/4789068、錯誤: 4533)。
功能:確保 ChromeDriver 會傳回 WebDriver 規格 (crrev.com/c/4797735、錯誤:4548) 要求的標準 platformName 值 (例如「linux」、「windows」、「mac」)。
內部變更和重構
已遷移 MockSocket 中的程式碼,優先使用 base::span<> 而非原始指標,以提升安全性 (crrev.com/c/4832086)。
已移除 base::raw_ptr 和 base::raw_ref 的淘汰用法,改用透過自動清除作業 (crrev.com/c/4773481) 取得的不合格形式 raw_ptr 和 raw_ref。
暫時還原一項變更,這項變更一律會使用最新版 ChromeDriver,因為這項變更導致 Windows 穩定版/Beta 版管道發生當機問題 (crrev.com/c/4778973,還原 crrev.com/c/4777430)。
調整 WPT (Web Platform Tests) 設定,包括在 pointer_touch.py 中抑制僅限偵錯的失敗,以及為封閉框架實作瀏覽器端焦點驗證 (crrev.com/c/4844810、crrev.com/c/4572517)。
為符合 IWYU 規範,在 client_hints.h 中新增缺少的 #include
將 Apple 專屬基本型別 (ScopedTypeRef、ScopedCFTypeRef、scoped_nsautorelease_pool) 遷移至 base::apple:: 命名空間,並為 Crashpad 留下暫時轉送標頭 (crrev.com/c/4799213、crrev.com/c/4790744、crrev.com/c/4790741、crrev.com/c/4784010)。
ChromeDriver 117
新功能
管道通訊:在所有支援的平台 (包括 Windows) 上,將 ChromeDriver 和 Chrome 之間的預設通訊模式從 WebSocket 變更為管道 (--remote-debugging-in-pipe 和 --remote-debugging-out-pipe) (crrev.com/c/4634299、crrev.com/c/4628834、crrev.com/c/4635378、錯誤:3480)。
BiDi:更新 BiDi Mapper 依附元件 (crrev.com/c/4670516、Bug: 4226)。
修正錯誤
穩定性:修正導致 ChromeDriver 異常終止的空指標存取問題,進而解決測試執行期間發生的 ConnectionRefused 錯誤 (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、Bug: 4379)。注意:這項變更隨後已還原,因為某些特定程式碼路徑需要不同的錯誤代碼 (crrev.com/c/4651188)。
內部變更和重構
由於 ChromeDriver 現在已完全整合至 Chrome 發布程序,並可透過 Chrome for Testing 基礎架構取得 (crrev.com/c/4520687、錯誤:4142),因此我們已淘汰手動 ChromeDriver 發布程序指令碼。
遷移 WPT (Web Platform Tests) 基礎架構,改用官方 wptrunner 測試架構,而非自訂 run_webdriver_tests.py,大幅提升執行速度和可靠性,並確保 ChromeDriver 在測試之間重新產生,以隔離當機問題 (crrev.com/c/4723147、crrev.com/c/4676070、crrev.com/c/4639168)。
大幅重構 ChromeLauncher 和相關類別,支援轉換至管道、鬆綁與 DevToolsHttpClient 的耦合,並將 WebSocket 邏輯移至專用分支版本 (crrev.com/c/4632801、crrev.com/c/4674345)。
將容易誤導的 BrowserInfo.is_headless 欄位重新命名為 BrowserInfo.is_headless_shell,為求明確 (crrev.com/c/4650452、錯誤:4358)。
在整個程式碼集區中,以現代的 base::Value::Dict 對等項目 (例如 FindDouble()、Set()、size()) 取代各種已淘汰的 base::Value 方法 (crrev.com/c/4258936、crrev.com/c/4336805、crrev.com/c/4461067)。112.0.5603.0、113.0.5653.0、114.0.5733.0
移除 [w]ctype.h 的使用,改用更安全的基礎字串公用程式,並實作 base::expected 的新功能 (crrev.com/c/4749459、crrev.com/c/4755226)。
在 TestDriver 中為 FedCM WPT 實作 get_fedcm_dialog_title 和 select_fedcm_account 自動化指令 (crrev.com/c/4618303)。
更新 BiDi 對應器建構指令碼,無論目前的工作目錄為何,都能正常運作 (crrev.com/c/4670550)。
在 macOS 建構作業中,將 /chrome/test/chromedriver 檔案轉換為使用 ARC (自動參照計數),並新增必要的樣板 (crrev.com/c/4663602)。
我們嘗試透過自動橡皮章提交,預設停用管道通訊,但這項變更只觸及設定,並未改變先前導入的預設管道核心行為 (crrev.com/c/4683947)。
ChromeDriver 116
新功能
FedCM:新增一項功能,讓用戶端不必執行 FedCM 指令,即可檢查 ChromeDriver 是否支援這些指令,並擷取錯誤 (crrev.com/c/4624924、Bug: 1356159)。
測試:啟用測試視窗重複使用功能,以便透過 ChromeDriver 在 wptrunner 中執行 testharness 測試,評估這項功能對效能和不穩定性的影響 (crrev.com/c/4515180、錯誤:1394572)。
修正錯誤
符合 C++ 標準:修正因在格式字串中直接使用範圍列舉 (enum class) 而導致的未定義行為,解決新的 Clang 編譯器警告 (crrev.com/c/4628112、Bug: 1456289)。
FedCM:修正導致測試不穩定的潛在原因,解決導致 setdelayenabled 無法正常運作的極端情況 (crrev.com/c/4606064、Bug: 1453412)。
內部變更和重構
BiDi:調升 BiDi 對應器依附元件,並更新建構指令碼,預設從「main」提取最新修訂版本 (crrev.com/c/4615087、crrev.com/c/4615791、錯誤:4226)。
ChromeDriver 現在會明確使用 UTF-8 編碼開啟及寫入所有檔案 (crrev.com/c/4614522)。
重構 ChromeImpl,消除對 DevToolsHttpClient 的依附元件,並減少 SyncWebSocketFactory 和 BrowserInfo 的用量,為透過管道而非 WebSocket 通訊做好準備 (crrev.com/c/4571690、crrev.com/c/4571199、Bug: 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
新功能
行動裝置模擬:在行動裝置模擬中導入使用者代理程式用戶端提示支援,讓 ChromeDriver 能夠從功能和預設值剖析用戶端提示,並傳遞至 Chrome (crrev.com/c/4498667、crrev.com/c/4466129、錯誤:4243)。
行動裝置模擬:更新行動裝置模擬預設值,在使用者代理程式中取代 %s 格式字串時,改用主機瀏覽器的主要版本,而非 ChromeDriver 版本 (crrev.com/c/4502850、Bug: 4243)。
設定:新增支援下載特定管道的 ChromeDriver 版本,改善 ChromeDriver 在不同平台 (例如 Android/WebView) 上執行的自動化情境,而非主機 (crrev.com/c/4550281)。116.0.5791.0
修正錯誤
傳統版:修正了無法解析節點時,系統會錯誤傳回 UnknownError,而非標準 NoSuchElement 錯誤的問題 (crrev.com/c/4508952、錯誤:4440)。
行動裝置模擬:在行動裝置模擬預設集中新增更嚴格的斷言,強制執行以下規則:如果 userAgent 字串包含「Mobile」,則 clientHints.mobile 旗標必須為 true (crrev.com/c/4507142、錯誤:4243)。
行動裝置模擬:已將 DeviceMetrics 覆寫項目遷移至使用 Emulation.setDeviceMetricsOverride CDP 指令,而非已淘汰的 Page 網域對等項目 (crrev.com/c/4502614、Bug: 4243)。
內部變更和重構
BiDi:更新 BiDi Mapper 依附元件,啟用深度序列化功能 (crrev.com/c/4535936、crrev.com/c/4512195)。
從 DevToolsClient 移除已淘汰的 Connect 方法,為 ChromeDriver 遷移至透過管道通訊做準備 (crrev.com/c/4521485、Bug: 3480)。
將程式碼集遷移至偏好使用 base::Value::Dict 而非 base::Value,並取代已淘汰的方法,例如 FindStringKey()、SetKey() 和 SetByDottedPath() (crrev.com/c/4529788、crrev.com/c/4522701、crrev.com/c/4515800、crrev.com/c/4507150)。
改用 string_util.h 函式取代 [w]ctype.h,確保類型轉換作業更安全 (crrev.com/c/4529187)。
變更種子檔案載入邏輯,使用絕對路徑,確保指令碼和 Chrome 在不同位置執行時的一致性 (crrev.com/c/4504656)。
從 web_view.h 移除了未使用的 CallAsyncFunction() 方法 (crrev.com/c/4518363、錯誤:3376)。
已將 base::raw_ptr 自動重新命名為 raw_ptr,以符合樣式指南偏好設定 (crrev.com/c/4476651)。
ChromeDriver 114
新功能
傳統:將 MobileDevice 資訊傳遞至 MobileEmulationOverrideManager,為日後的用戶端提示和 UserAgent 覆寫作業奠定基礎 (crrev.com/c/4447524)。
測試:為 ChromeDriver 新增測試固定裝置 (crrev.com/c/4459939)。
修正錯誤
無頭:修正新無頭模式中的異常終止問題,方法是忽略指令碼列印預覽要求 (例如 window.print()),使行為與舊無頭模式一致 (crrev.com/c/4436313、錯誤:4385)。
功能:修正 ChromeDriver 功能中的 use-after-move 錯誤 (crrev.com/c/4462094,錯誤:4243)。
DevTools:移除了 DevToolsClientImpl::SendCommandInternal 中的 DCHECK,避免開發人員工具連線中斷時發生當機情形,因為這並非不變量違規事項 (crrev.com/c/4370486、錯誤:4385)。
內部變更和重構
BiDi:更新 BiDi 對應程式依附元件 (crrev.com/c/4418727)。
在單元測試執行期間,透過適當管理 WebViewImpl 和效能記錄器測試中的未擁有參照和本機毀損,解決多個懸空指標警告 (crrev.com/c/4374824、crrev.com/c/4368179)。
將程式碼集遷移至新的 base::Value v2 API,取代已淘汰的方法,例如 Value::SetPath()、Value::SetStringPath() 和 base::ListValue (crrev.com/c/4452309、crrev.com/c/4431420、crrev.com/c/4422897、crrev.com/c/4377520)。
將所有 base::GUID 用法替換為 base::Uuid,以配合核心基礎程式庫重新命名 (crrev.com/c/4455083)。
執行各種程式碼清理作業,包括縮短程式碼、使用 expected 的單子運算、移除無效程式碼,以及修正樣式違規事項 (crrev.com/c/4475368、crrev.com/c/4464199)。
更新涉及設有圍欄的影格的測試,改用 config 屬性,而非已淘汰的 src 屬性 (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/4437492、crrev.com/c/4298554)。
為 std::strlen 中的 web_view_impl.cc 新增缺少的 include (
已移除未使用的測試檔案 (orientation_test.html) (crrev.com/c/4335668)。
ChromeDriver 113.0.5672.63
支援 Chrome 113 版
解決問題 4205:傳統版和 BiDi 中的物件 ID 相同 [Pri-1]
已解決問題 4302:請勿假設 Mapper 位於 ExecuteGetWindowHandles 的第一個分頁中 [Pri-1]
解決問題 4356:Chrome 110 未使用偏好設定值「download.default_directory」[Pri-1]
詳情請參閱版本資訊。
ChromeDriver 113.0.5672.24
支援 Chrome 113 版
解決問題 4205:傳統版和 BiDi 中的物件 ID 相同 [Pri-1]
已解決問題 4302:請勿假設 Mapper 位於 ExecuteGetWindowHandles 的第一個分頁中 [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:DCHECK 在 DevToolsClientImpl::AddListener 失敗 [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:DCHECK 在 DevToolsClientImpl::AddListener 失敗 [Pri-]
詳情請參閱版本資訊。
ChromeDriver 110.0.5481.77
支援 Chrome 110 版
已解決問題 4193:無法在 Android 13 上啟動新工作階段 [Pri-]
解決問題 4272:WebSocket 應將 code=0 視為 FIN 的指標 [Pri-]
解決問題 4276:修正 ChromeDriver 中的連線問題 [Pri-]
解決問題 4295:ChromeDriver with "webSocketUrl": true is racy [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:ChromeDriver with "webSocketUrl": true is racy [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:禁止處理任何 BiDi 指令,直到收到 BiDiMapper 已啟動的通知為止 [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 支援 [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 指令有時會失敗,並顯示「unexpected command response」[Pri-1]
詳情請參閱版本資訊。
ChromeDriver 104.0.5112.20
支援 Chrome 104 版
解決問題 4121:WebDriver 指令有時會失敗,並顯示「unexpected command response」[Pri-1]
詳情請參閱版本資訊。
ChromeDriver 103.0.5060.134
支援 Chrome 103 版
解決問題 4048:目標影格已分離 [Pri-]
解決問題 4121:WebDriver 指令有時會失敗,並顯示「unexpected command response」[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:無法存取 shadow root 內 iframe 中的元素 [Pri-3]
詳情請參閱版本資訊。
ChromeDriver 96.0.4664.35
支援 Chrome 96 版
解決問題 3445:無法存取 shadow root 內 iframe 中的元素 [Pri-3]
詳情請參閱版本資訊。
ChromeDriver 96.0.4664.18
支援 Chrome 96 版
解決問題 3445:無法存取 shadow root 內 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:GetElementLocation 的 inView 屬性在 shadow DOM 中對元素失敗
已解決問題 3721:啟用時收集 Service Worker 的效能記錄
解決問題 3731:在非標準 Android OS (例如 OnePlus) 上,AdbImpl::GetPidByName 無法正常運作
解決問題 3733:本機主機上的網域發生嚴重故障
解決問題 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() 輸出內容與
解決問題 3625:提升元素螢幕截圖相容性
解決問題 3628:陳舊元素參照和錯誤網址回報,網址路徑包含其他網址
已解決問題 3631:新增 webauthn:extension:largeBlob 功能支援
解決問題 3635:Chromedriver 86 - chromedriver.quit() 似乎無法正確傳遞卸載事件
解決問題 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 伺服器上的舊通訊埠轉送管道
已解決問題 3474:需要更新模擬行動裝置清單
解決問題 3507:實作「get computed role」
解決問題 3508:實作「取得計算標籤」
解決問題 3584:重新命名 ChromeDriver 指令列選項 --whitelisted-ips
已解決問題 3588:雙向 WebSocket 連線
解決問題 3594:如果 OOPIF 在主要頁面之前載入,瀏覽作業會過早完成
解決問題 3598:開發人員工具通訊埠的指令列選項,可轉送至 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,CMD 鍵無法在 MAC 上運作
解決問題 3541:改善 Client 和 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 規格新增 Print 端點
解決問題 3488:Proxy 設定錯誤時,driver.get 不會擲回錯誤
解決問題 3502:使用 document.hasFocus() 檢查元素是否處於焦點狀態
已解決問題 3515:selenium.common.exceptions.WebDriverException: Message: unknown error: bad inspector message
詳情請參閱版本資訊。
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 版
更新 Chromedriver,確保能與 prototype.js 正常運作。
詳情請參閱版本資訊。
ChromeDriver 83.0.4103.14
支援 Chrome 83 版
解決問題 1778:從 ChromeDriver 淘汰 launchApp
解決問題 2520:Chrome 無回應時,InitSession 可能會無限期等待
已解決問題 3120:從新分頁下載無頭模式
解決問題 3234:確認子字串前是否找到半形分號
已解決問題 3240:ExecuteGetElementRect 不會檢查 GET_SIZE 傳回的狀態
已解決問題 3331:get_cookies() 方法會傳回雙精度浮點數類型的「expiry」鍵,但在 w3c 模式中應為 int64
已解決問題 3332:重試逾時記錄為嚴重
已解決問題 3339:Chromedriver 意外結束,代碼為空值,訊號為 SIGTRAP
已解決問題 3351:改善「安全考量」訊息
已解決問題 3352:支援顏色元素的 SendKeys
已解決問題 3353:框架情境遭到刪除後,系統仍會繼續等待待處理的導覽作業
已解決問題 3375:在某些網站上,Chromedriver v80 會在 getPageSource 上停止運作
已解決問題 3383:在 Windows 上,ChromeDriver 80 以上版本似乎會在特定元素或點選指令上結束或停滯
已解決問題 3399:移除 wasThrown 檢查
ChromeDriver 81.0.4044.138
支援 Chrome 81 版
更新 Chromedriver,確保能與 prototype.js 正常運作。
詳情請參閱版本資訊。
ChromeDriver 81.0.4044.69
支援 Chrome 81 版
已修正:在部分網站上,Chromedriver 會在 getPageSource 上異常終止。
已修正:ChromeDriver 在特定元素或點擊指令上當機的問題。
詳情請參閱版本資訊。
ChromeDriver 81.0.4044.20
支援 Chrome 81 版
修正嘗試取得 HTML 元素位置時發生的錯誤。
「Get Cookie」和「Add Cookie」指令現在是影格專屬指令。
修正重新定義標準 JavaScript 物件的網站發生的一些問題。
收到「目標已關閉」訊息後,ChromeDriver 會繼續等待載入完成。
Chromedriver 現在會傳回符合規格的逾時錯誤代碼
已修正:ChromeDriver 在 NewSession 指令上回應速度異常緩慢的問題。
現在支援超過 10 分鐘的使用者定義逾時。
已修正:ChromeDriver 無法連線至開發人員工具,因為 IPv4 與 IPv6 不符。
還原 Linux 上 Chrome 二進位檔的搜尋順序。
詳情請參閱版本資訊。
ChromeDriver 80.0.3987.106
支援 Chrome 80 版
還原 Linux 上 Chrome 二進位檔的搜尋順序
詳情請參閱版本資訊。
ChromeDriver 80.0.3987.16
支援 Chrome 80 版
修正使用 Proxy 時,載入頁面遭中止的問題。
Chromedriver 現在會等待目前影格載入。
ChromeDriver 記錄檔會包含驅動程式使用的連接埠。
已為 w3c 模式啟用 SetGeoLocation。
為 UnexpectedAlertOpen 狀態新增缺少的警示文字。
載入 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 版
修正 ChromeDriver 當機問題,此問題是由於在執行指令期間觸發 JavaScript 快訊所致
修正錯誤:在擷取螢幕截圖時觸發快訊,導致 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 物件時的兩個錯誤
修正比對功能時的 platformName: android 處理方式
詳情請參閱版本資訊。
ChromeDriver 77.0.3865.10
支援 Chrome 77 版
修正 Actions API 實作中的多項問題
提升 JavaScript 程式碼執行和結果處理效能
修正 OSS 模式下,系統會錯誤拒絕主體空白的 POST 要求的問題
更強大的導航追蹤器
支援積極載入網頁策略
新增 W3C WebDriver 規格的 New Window 指令
支援在無頭模式下儲存下載的檔案
新增支援載入 CRX3 擴充功能
詳情請參閱版本資訊。
ChromeDriver 76.0.3809.126
支援 Chrome 76 版
相較於 76.0.3809.68 版,這個版本包含下列變更:
修正序列化和還原序列化 JavaScript 物件時的兩個錯誤
詳情請參閱版本資訊。
ChromeDriver 76.0.3809.68
支援 Chrome 76 版
與 76.0.3809.25 版相比,這個版本包含下列變更:
修正偵測 JavaScript 物件中循環參照的錯誤
修正錯誤:發生特定類型的 JavaScript 錯誤時,ChromeDriver 會當機
修正錯誤,避免 Actions 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 實作
改善指令碼逾時處理的規格相容性
改善「執行指令碼」指令的結果序列化
修正將捲動元素帶入檢視畫面時的問題
新增 WebDriver 規格中定義的「取消」鍵處理作業
修正未處理的快訊錯誤回應處理程序
修正
更新 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 標準的模式執行。其他變更包括:
修正錯誤:元素清除期間會引發兩次模糊事件
根據 W3C 標準,將功能 loggingPrefs 重新命名為 goog:loggingPrefs
修正 W3C 模式中的錯誤處理方式
正確處理在網域名稱中建立沒有前置點的 Cookie
允許指令碼逾時為空值
修正 Element Send Keys 指令,將檔案輸入內容與「multiple」屬性搭配使用
修正「取得有效元素」指令,在沒有有效元素時傳回「沒有這類元素」錯誤
修正導向格式錯誤網址時傳回「無效引數」錯誤的問題
修正收到無效工作階段 ID 時的 HTTP 狀態碼
修正輸入參數遺失或格式錯誤時的回應錯誤
修正「執行指令碼」指令,以處理以行為導向的 JavaScript 註解
詳情請參閱版本資訊。
ChromeDriver 74.0.3729.6
支援 Chrome 74 版
修正 Windows 上會產生非預期 debug.log 檔案的錯誤
修正 SVG 文件中的滑鼠點選和拖曳 / 放置問題
在 ChromeDriver 的回應中新增快取控制標頭
修正點擊遭其他元素攔截時的錯誤類型
修正錯誤:在沒有 /dev/shm 的 Linux 裝置上,ChromeDriver 會失敗
修正部分類型的雙擊事件
修正 Get Sessions 指令
修正「切換至頁框」指令中的錯誤檢查
修正「取得網頁原始碼」指令
詳情請參閱版本資訊。
ChromeDriver 73.0.3683.68
支援 Chrome 73 版
修正 Windows 上會產生非預期 debug.log 檔案的錯誤
修正部分情況下,從「執行指令碼」指令傳回的錯誤代碼
在 ChromeDriver 的回應中新增快取控制標頭
預設讓 HTTP 伺服器保持連線
修正「關閉視窗」指令,正確處理使用者提示
修正將鍵盤按鍵傳送至已停用元素時傳回的錯誤代碼
改善逾時值處理的規格遵循情況
改善「新增 Cookie」指令的規格遵循情形
增加 HTTP 伺服器接聽佇列長度
修正 v0 shadow DOM 中的「Is Element Displayed」指令
在記錄檔中新增 Element Clear 指令行為變更的警告
修正「執行指令碼」指令,可正確將 document.all 轉換為 JSON 格式
改善錯誤元素參照的處理方式
詳情請參閱版本資訊。
ChromeDriver 2.46
支援 Chrome 71 至 73 版
修正部分情況下,從「執行指令碼」指令傳回的錯誤代碼
預設讓 HTTP 伺服器保持連線
修正「關閉視窗」指令,正確處理使用者提示
修正將鍵盤按鍵傳送至已停用元素時傳回的錯誤代碼
改善逾時值處理的規格遵循情況
改善「新增 Cookie」指令的規格相容性
改善「切換至影格」指令的規格相容性
增加 HTTP 伺服器接聽佇列長度
修正 v0 shadow DOM 中的「Is Element Displayed」指令
「Fixed Element Double Click」指令
在記錄檔中新增 Element Clear 指令行為變更的警告
修正「執行指令碼」指令,可正確將 document.all 轉換為 JSON 格式
改善錯誤元素參照的處理方式
詳情請參閱版本資訊。
ChromeDriver 2.45
支援 Chrome 70 至 72 版
修正「新工作階段」不符合規格的問題
修正 ChromeDriver 不應在 Chrome 和 ChromeDriver 版本不相容時啟動 Chrome
修正使用無效定位器時,「尋找元素」指令會傳回錯誤代碼的問題
修正部分 ChromeDriver 狀態碼有誤的問題
修正 WebViewImpl::DispatchTouchEventsForMouseEvents 內 JS 的編譯錯誤
固定視窗大小指令應處理使用者提示
修正 ChromeDriver 無法使用 Chrome 選項「user-data-dir=」正確啟動 Chrome 的問題
修正狀態指令不符合規格
修正新增對 strictFileInteractability 的支援
ChromeDriver 2.44
支援 Chrome 69 至 71 版
修正 Mac 上的 WindowMaximize
修正視窗控制代碼呼叫的「快訊開啟錯誤」問題
在 W3C 模式下,固定元素傳送鍵應取得「text」屬性
修正 XML 特殊情況,即「Is Element Enabled」未按照規格處理
修正 XML 特殊情況:Get Element CSS Value 未依規格處理
修正「設定視窗矩形」需要檢查無效輸入內容的問題
修正支援新的 unhandledPromptBehavior 模式
ChromeDriver 2.43
支援 Chrome 69 至 71 版
變更包括:
修正:Proxy 設定的剖析不符合標準
修正「啟動應用程式」指令不穩定問題
修正:系統會錯誤擷取 iFrame 內元素的螢幕截圖
ChromeDriver 新增支援透過遠端連線調整視窗大小的功能
修正「清除元素」未處理錯誤代碼的問題
修正「未等到元素顯示」問題
修正「Get element property」未實作的問題
「切換至影格」固定功能不符合規格
修正「執行非同步指令碼」不會傳回符合規格的錯誤代碼
修正「執行指令碼」未傳回符合規格的錯誤代碼
修正「ExecuteGet 中的錯誤代碼不符合規格」問題
修正「傳送警報文字」未傳回符合規格的錯誤代碼
修正 input type="date" 上的 clear(),假裝元素無法由使用者編輯
修正 Chromedriver 會取得手動開啟分頁的視窗控制代碼
修正允許附加或為 chromedriver 啟動新記錄檔的問題
修正問題:如果旗標位於 firstMatch 中,系統不會叫用新工作階段的 w3c 模式
ChromeDriver 2.42
支援 Chrome 68 至 70 版
變更包括:
修正行動裝置模擬中的 ClickElement
修正 IPv4 的許可清單 IP
修正 Mac OS 上使用 whitelisted-ips 旗標啟動 ChromeDriver 的問題
修正 SetTimeout,可接受前 W3C 和 W3C 格式
修正擷取元素螢幕截圖的問題
修正 ChromeDriver 也會在系統 PATH 中尋找 Chrome 二進位檔的問題
修正「將視窗放到最大」和「全螢幕」問題
實作記錄重播功能。( 目前不適用於 Android 和遠端瀏覽器)
修正部分錯誤代碼不符合 W3C 標準的問題
修正無法正確處理含多個引數的 console.log
修正 GetElementRect 應允許雙精度浮點數的問題
修正觸控模擬
ChromeDriver 2.41
支援 Chrome 67 至 69 版
變更包括:
修正 ChromeDriver 搭配「whitelisted-ips」選項執行時的問題
遠端偵錯通訊埠會傳回功能
實作在 Android 上取得視窗大小的功能
改善了電腦版 Chrome 的啟動錯誤訊息
如果無法啟動 Chrome 二進位檔,ChromeDriver 會快速失敗
Close Window 傳回值符合規格