舊版 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
<selectlist>元素新增特定測試 (crrev.com/c/7420729、錯誤:342889200)。
修正錯誤
- 螢幕截圖:還原元素螢幕截圖的縮放比例,因為 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標頭中移除多餘的<map>包含項目 (crrev.com/c/7225838、Bug: 40318405)。修正部分檔案中的 include 排序 (crrev.com/c/7366868)。在SimpleURLLoader用法中,以BodyAsStringCallback取代舊版BodyAsStringCallbackDeprecated回呼,後者會使用std::optional而非std::unique_ptr(crrev.com/c/7210000、錯誤:40258809)。 - 測試:重新登陸
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)。 - 測試:利用
WaitForConditionAPI 進行更可靠的同步處理,修正不穩定的 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_bufferspragma (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/testGN 檔案 (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) 和<queue>(crrev.com/c/6570349、Bug: 40318405) 包含項目。修正//chrome中的IWYUNOTIMPLEMENTED()(crrev.com/c/6655452、錯誤:41493641)。 - 記憶體安全 (範圍化):在 Linux 建構版本中執行自動指標範圍化工具,更新程式碼以在已知大小的位置使用範圍 (crrev.com/c/6734592,錯誤:431824299)。遷移完成後,已移除整個檔案的
#pragma allow_unsafe_bufferspragma (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-mapperCLI 旗標,因為在隱藏目標中執行 BiDi 對應器的轉換作業已完成且穩定 (crrev.com/c/6672011、錯誤:408992812)。 - 清除:移除對不支援的
WebLayer專案的其餘參照 (crrev.com/c/6792520、Bug: 40272607)。自動格式化//chrome/testGN 檔案,縮短目標參照 (crrev.com/c/6789277、Bug: 40760278)。 - 測試:新增了驗收測試,可驗證
PerformActionspointerMove問題的修正 (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中明確納入<vector>(crrev.com/c/6652818)、base/notimplemented.h(並移除未使用的base/notreached.h) (crrev.com/c/6655452、Bug: 41493641)、base/strings/string_util.h(crrev.com/c/6607646)、base/strings/string_number_conversions.h(crrev.com/c/6593576),以及移除多餘的base/debug/stack_trace.h納入項目 (crrev.com/c/6622838),改善整個//chrome的「Include What You Use」(IWYU) 規範遵循情形。 - 測試:將
--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_bufferspragma,這些 pragma 在其他遷移作業後已不再需要 (crrev.com/c/6503154、Bug: 414858406)。 - C++ 標準:移除
chrome/標頭中多餘的#include "url/gurl.h"和#include <queue>指令,並視需要新增轉送宣告,以縮短編譯時間 (crrev.com/c/6578272、crrev.com/c/6570349、Bug: 40318405)。 - 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.getWindowForTargetAPI,支援 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 AtomsCLEAR函式) 等標準錯誤,都能準確傳播給使用者 (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)。包含先前以遞移方式提取的必要<unordered_map>標頭 (crrev.com/c/5792881)。 - 架構:還原
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(),因為setSensorOverrideReadingsCDP 指令不會傳回值 (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
Decodemethods ofWebSocketFrameParserto 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.htmlWPT 測試失敗的問題,原因是系統誤將對話方塊標示為已關閉。現在只有在selectAccount作業實際成功時,系統才會更新狀態 (crrev.com/c/5398379、錯誤:331237776)。 - 測試:修正字元正好達到
kExtendedASCIIStart邊界時,JSON 剖析期間發生的DCHECK失敗問題 (crrev.com/c/5565276、錯誤:40284755)。 - 測試:使用 iframe 元素做為捲動來源,並將指標移動輸入內容四捨五入為整數,修正
scrollend-event-fires-to-iframe-window.htmlWPT 測試,避免 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-navigationWPT,透過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.htmlWPT 測試中的失敗問題,方法是合併動作序列,並將主要頁框的文件做為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.jsAPI 新增對SetRPHRegistrationModewebdriver 指令的內容殼層支援 (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-atomsREADME 提供第三方通知,藉此改善授權產生作業 (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.htmlMIDI 測試,避免不必要地建構 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)。 - 傳統:重新架構元素參照產生作業,改用
<frame_id>.<loader_id>.<backend_node_id>格式;這樣一來,ChromeDriver 就能在框架導覽和 DOM 更新期間,明確區分有效、不明和過時的元素參照 (crrev.com/c/5094519、錯誤:4379)。 - 傳統:修正問題:如果新建立的目標在 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)。 - 將
ConfirmIdpLoginFedCM webdriver 指令改為更具擴充性的ClickDialogButton指令,可接受DialogButton參數 (crrev.com/c/5003255、Bug: 1499341)。 - 更新
crossbench依附元件,修正多項問題並新增多項功能,包括改善驅動程式類型剖析、網路存根和 iOS 支援 (crrev.com/c/5009937)。 - 為符合 IWYU 規定,在
chrome_finder.h中新增缺少的#include <string>(crrev.com/c/4994605、Bug: 957519)。
ChromeDriver 120
新功能
- BiDi:新增
session.new和session.end指令的支援功能,讓使用者可透過 BiDi 指令直接建立及終止工作階段 (crrev.com/c/4941941、錯誤:4496)。 - BiDi:新增支援
session.statusPureBiDi 指令,讓使用者建立未繫結任何工作階段的 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 <vector>(crrev.com/c/4767547)。 - 將 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.setDeviceMetricsOverrideCDP 指令,而非已淘汰的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::Valuev2 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 (<cstring>),修正 IWYU 建構問題 (crrev.com/c/4376772)。 - 已移除未使用的測試檔案 (
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": trueis 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": trueis 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()輸出內容與<element>.innerText不同 - 解決問題 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 規格中定義的「取消」鍵處理作業
- 修正未處理的快訊錯誤回應處理程序
- 修正
<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 標準的模式執行。其他變更包括:
- 修正錯誤:元素清除期間會引發兩次模糊事件
- 根據 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 傳回值符合規格