Các phiên bản Chrome cũ hơn
Đối với các phiên bản Chrome cũ hơn, đây là các phiên bản ChromeDriver hỗ trợ Chrome.
Để biết thêm thông tin về cách chọn đúng phiên bản ChromeDriver, hãy xem trang Lựa chọn phiên bản.
ChromeDriver 148
Sửa lỗi
- Quyền truy cập DOM: Khắc phục sự cố xảy ra khi mô phỏng một lượt nhấp vào nút bên trong một iframe được lồng bên trong một gốc bóng đóng. JavaScript từng được dùng để tìm mã nhận dạng phần tử khung của chủ sở hữu không thể xuyên qua các gốc bóng đóng; việc triển khai mới trực tiếp sử dụng định dạng
f.X.d.Y.e.Zđể phân giải khung (crrev.com/c/7594919, Lỗi: 469831357). - Bảo mật: Tăng cường tính năng dọn dẹp đối số của Chrome để ngăn chặn lỗ hổng bảo mật tiềm ẩn liên quan đến việc chèn đối số vị trí (crrev.com/c/7695604, Lỗi: 494464734).
- Kiểm thử: Tăng thời gian chờ
kImplicitWaitcho các kiểm thửFindElement(s)WhileNavigatingtrongcommands_unittestkhi chạy trong AddressSanitizer (ASAN). Thời gian chờ mặc định là 3 giây không đủ để vòng lặp thử lại sử dụng hết tất cả các lỗi mô phỏng trong chi phí ASAN, gây ra sự không ổn định (crrev.com/c/7657276).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Thay thế các nội dung bao gồm thừa của
base/functional/callback_forward.htrên các tệp//chrome.cc, thực thi việc sử dụngcallback.hkhi các lệnh gọi lại thực sự được sử dụng (crrev.com/c/7200285, Lỗi: 40318405). Đã di chuyểnlogging::LoggingSettingstừbase/logging.hsang tiêu đề riêngbase/logging/logging_settings.hđể cải thiện hiệu quả biên dịch (crrev.com/c/7173024, relanding crrev.com/c/7160150 sau khi hoàn nguyên crrev.com/c/7170750). Giải quyết nhiều lỗi IWYU liên quan đếnbase/logging.h(crrev.com/c/7730403, Lỗi: 499476145). - Các tiêu chuẩn C++: Thay thế các lệnh kiểm tra bản đồ
count(key)dư thừa, sau đó tra cứu bằng các lệnh truy cập trình lặpfind(key)hiệu quả hơn (crrev.com/c/7705392, crrev.com/c/7693277, Lỗi: 452950815). ChènThreadDelegatethông qua hàm khởi tạoThreadđể cải thiện khả năng đóng gói, đồng thời thêm lựa chọnRestartablevàoThreadđể đáp ứng những trường hợp cần khởi động lại các luồng (crrev.com/c/7696887, Lỗi: 40881604). - An toàn bộ nhớ: Chuyển đổi
#pragma allow_unsafe_bufferstrên toàn bộ tệp thành macroUNSAFE_TODO()chi tiết trênchrome/(crrev.com/c/7132241, Lỗi: 409340989). Rút ngắnIOBuffer->span().first()thànhIOBuffer->first()(crrev.com/c/7159119). - Phụ thuộc: Đã triển khai phần phụ thuộc
crossbench, mang đến các bản sửa lỗi để khám phá các tệp nhị phân ChromeDriver được tạo cục bộ trên macOS và Android (crrev.com/c/7673978). - Kiểm thử: Đã bật lại lược đồ
moduletrongchromedriver_py_testssau khi khắc phục các vấn đề về cơ sở hạ tầng cơ bản cho hoạt động kiểm thử và tạo bản dựng (crrev.com/c/7707960).
ChromeDriver 147
Sửa lỗi
- Kiểm thử: Đã thêm một kiểm thử hồi quy khép kín để xác minh rằng
ElementClickxử lý chính xác các lượt nhấp vào iframe trên nhiều nguồn gốc có các phần tử lớp phủ, cụ thể là trong các trường hợp tách biệt trang web. Điều này đảm bảo rằng các lượt nhấp không bị định tuyến nhầm vào nội dung được nhúng thay vì lớp phủ hiển thị (crrev.com/c/7261984, Lỗi: 42321834, Lỗi: 42322220).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Đổi tên các chế độ và hàm giải mã URL để tuân thủ hướng dẫn về kiểu C++ của Google, thay đổi
DecodeURLModethànhDecodeUrlModevàDecodeURLEscapeSequences()thànhDecodeUrlEscapeSequences()(crrev.com/c/7593238). Giới thiệuurl::UrlEscapeDecoderđể đơn giản hoá việc sử dụng tính năng giải mã URL trong toàn bộ cơ sở mã (crrev.com/c/7610180). Xoá các phần tửbuild/branding_buildflags.hkhông cần thiết khỏi tệp//chrome(crrev.com/c/7595125, Lỗi: 40318405). Đã xoá logicBUILDFLAG(IS_FUCHSIA)khỏi//chrome, ngoại trừ trong ChromeDriver (crrev.com/c/5485913, Lỗi: 41481724). - An toàn bộ nhớ (spanification): Đã giải quyết các điểm đánh dấu
UNSAFE_TODOtrong các tiện ích ChromeDriver, di chuyển các điểm đánh dấu này sang các triển khai an toàn dựa trên khoảng (crrev.com/c/7562602, Lỗi: 435317390).
ChromeDriver 146
Sửa lỗi
- Tính ổn định: Khắc phục sự cố ChromeDriver có thể xảy ra trong khi xử lý một lệnh nếu cửa sổ đóng đồng thời (ví dụ: trong khi chờ quá trình điều hướng hoàn tất). Bản sửa lỗi này sẽ khoá đối tượng
WebViewđể ngăn đối tượng này bị loại bỏ quá sớm (crrev.com/c/7257074, Lỗi: 468228355). - Bảo mật: Đã thêm chế độ kiểm tra tiêu đề
Origincho các kết nối WebSocket đến máy chủ HTTP ChromeDriver, ngăn chặn hành vi chiếm đoạt có thể xảy ra trên nhiều nguồn (crrev.com/c/7538400, Lỗi: 478783560). - Thử nghiệm: Di chuyển
testWebviewDetactedDuringClicksang bộ lọc không ổn định, bỏ qua bộ lọc này trong tất cả các lần chạy thay vì chỉ ở chế độ không có giao diện người dùng (crrev.com/c/7545378, Lỗi: 481485821).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Đổi tên
base::DictValuevàbase::ListValuethành các phiên bản hiện đại tương đương (base::Value::Dictvàbase::Value::List) trên//chrome(crrev.com/c/7515855, crrev.com/c/7514475, Lỗi: 478100525). Thay thế các lượt sử dụngbase::Contains()bằngstd::ranges::contains()(crrev.com/c/7461026, Lỗi: 470391351). Đã di chuyểnstd::setvàstd::unordered_setsangbase::fixed_flat_setkhi thích hợp (crrev.com/c/7521991, Lỗi: 473916362). Tái cấu trúc các lệnh gọibase::JSONReader::Readkhông chỉ định các lựa chọn phân tích cú pháp (crrev.com/c/6990988, crrev.com/c/6980533, Lỗi: 446188265). Thay thế nhiều lệnh gọibase::JSONWriter::Write()bằngbase::WriteJson()(crrev.com/c/6969134, crrev.com/c/6929101, Lỗi: 443929217). Đã dọn dẹp thứ tự#include(crrev.com/c/7366868). Di chuyển các tham chiếu lỗi trong phần nhận xét để sử dụng mã nhận dạng Buganizer thay vì mã nhận dạng Monorail (crrev.com/c/7528268, Lỗi: 321899722). Đổi tên cờ dựngIS_OZONE_*thànhSUPPORTS_OZONE_*để cho rõ ràng hơn (crrev.com/c/7535923). - An toàn bộ nhớ (spanification): Thay thế việc sử dụng con trỏ không an toàn bằng
base::spantrongbase/strings/utf_string_conversion_utils.cc(crrev.com/c/7496410, Lỗi: 439964610, Lỗi: 40284755). Spanified morebase::Fileusages in//chrometests (crrev.com/c/7489592, Bug: 435317390). Thay thếmemsetbằng quá trình khởi chạy tổng hợp trên//chrome(crrev.com/c/6875520, Lỗi: 435317390). Chuyển đổi#pragma allow_unsafe_bufferscòn lại thành các điểm đánh dấuUNSAFE_TODO(crrev.com/c/7132241, Lỗi: 409340989). - DSE Prewarm: Đã bật tính năng
DSEPrewarmtrongfieldtrial_testing_config.jsoncho macOS và Windows, vì vấn đề về độ không ổn định của ChromeDriver có liên quan đã được giải quyết (crrev.com/c/7489009, relanding crrev.com/c/7002185 sau khi hoàn nguyên crrev.com/c/7452344). (Lưu ý: Lần reland này sau đó đã bị huỷ lại do thời gian chạy thử nghiệm tăng lên trên Windows (crrev.com/c/7517985, Lỗi: 478888140)). - Chẩn đoán: Đã thêm tính năng theo dõi vị trí của người gọi vào các sự kiện theo dõi
WaitableEventvàConditionVariableđể dễ dàng gỡ lỗi hơn (crrev.com/c/7487755, Lỗi: 476408124).
ChromeDriver 145
Tính năng mới
- Thử nghiệm: Cập nhật khung thử nghiệm
run_py_tests.pyđể chấp nhận các thử nghiệm chuỗi xác định có độ dài khác nhau (ví dụ: 53, 101 và 501 ký tự) nhắm đến các phần tửinput,textareavàcontenteditable. Điều này giúp đảm bảo phạm vi hồi quy, không có ký tự nào bị loại bỏ trong các thao tácsend_keysdài (crrev.com/c/7221410, Lỗi: 428116078). - Thử nghiệm: Thêm một thử nghiệm cụ thể cho phần tử
<selectlist>HTML (crrev.com/c/7420729, Lỗi: 342889200).
Sửa lỗi
- Ảnh chụp màn hình: Đã khôi phục việc mở rộng quy mô ảnh chụp màn hình của phần tử, vì quy cách WebDriver không quy định việc mở rộng quy mô và việc này không nhất quán với các chức năng chụp ảnh màn hình khác (crrev.com/c/7409603, Lỗi: 42323022).
- Kiểm thử: Đã khắc phục các lỗi trong
testClientHintsDeviceNameIPhoneXvàtestClientHintsDeviceNameIPadbằng cách cập nhật các giá trị dự kiến trong kiểm thử ChromeDriver cho phù hợp với các giá trị chính xác gần đây (đối với các trường nền tảng, platformVersion, mô hình và mobile) được giới thiệu trong Công cụ cho nhà phát triển (crrev.com/c/7408699, Lỗi: 474179501).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Di chuyển nhiều cách sử dụng
base::Contains()sangstd::ranges::contains()trên//chrome(crrev.com/c/7411011, Lỗi: 470391351), bao gồm cả các bản sửa lỗi định dạng cần thiết (crrev.com/c/7247217). Tái cấu trúc các tham số chuỗi thànhstd::string_viewđể tránh phân bổ chuỗi không cần thiết khi sử dụngsubstr()(crrev.com/c/7350716). Xoá các phần tử<map>không cần thiết khỏi tiêu đề//chrome(crrev.com/c/7225838, Lỗi: 40318405). Đã sửa thứ tự bao gồm trong một số tệp (crrev.com/c/7366868). Thay thế các lệnh gọi lạiBodyAsStringCallbackDeprecatedcũ trong các lượt sử dụngSimpleURLLoaderbằngBodyAsStringCallback. Lệnh gọi lại này sử dụngstd::optionalthay vìstd::unique_ptr(crrev.com/c/7210000, Lỗi: 40258809). - Thử nghiệm: Đã triển khai lại cấu hình thử nghiệm thực địa
InfobarPrioritization, bao gồm cả các bản sửa lỗi để ngăn sự cố trong các thử nghiệm trình duyệt ChromeDriver khi xử lý các thanh thông tin đang chờ xử lý chưa được thêm vào hệ phân cấp view (crrev.com/c/7223590, Lỗi: 447176374). Đã khôi phục tính năng lọc quốc gia và ngôn ngữ cho tính năng Glic. Trước đó, tính năng này đã bị huỷ do các lỗi không liên quan trong quá trình kiểm thử (crrev.com/c/7245749, khôi phục crrev.com/c/7148759 sau khi huỷ crrev.com/c/7233767, Lỗi: 454431875).
ChromeDriver 144
Tính năng mới
- Quyền: Đã cập nhật lệnh
SetPermissionđể tuân thủ quy cách mới nhất của W3C, sử dụng URL của khung hiện tại (nguồn được nhúng) ngoài nguồn cấp cao nhất. Thao tác này sẽ định cấu hình chính xác các quyền nhưstorage-accessdựa trên ngữ cảnh được nhúng (crrev.com/c/7106801, relanding crrev.com/c/7093216 sau khi hoàn nguyên crrev.com/c/7104484, Lỗi: 384959114). - Thử nghiệm: Đã thêm
testMetadata(bao gồm cả tên thử nghiệm) vào tải trọng tải lên thử nghiệm ChromeDriver để hỗ trợ người xác nhận độ không ổn định khi sử dụng mã nhận dạng thử nghiệm có cấu trúc (crrev.com/c/7124354, Lỗi: 456432041).
Sửa lỗi
- Vòng đời mục tiêu: Đã khắc phục một lỗi khiến ChromeDriver bị treo nếu một khung chính tách ra trong khi một khung con đang chờ phản hồi lệnh. Giờ đây, ChromeDriver sẽ tách rõ ràng các khung con một cách gián tiếp khi một
WebViewImplmẹ bị khoá và được đánh dấu là đã tách trong quá trình xử lý lệnh (crrev.com/c/7080912, Lỗi: 438436830). - Quản lý cửa sổ: Tắt tính năng chuyển cửa sổ bị che khuất xuống nền, đặc biệt là đối với các phiên ChromeDriver. Điều này giải quyết các vấn đề trong WebDriver BiDi, trong đó các kiểm thử có thể không thành công nếu trình duyệt coi nhầm một cửa sổ là bị che khuất và điều chỉnh tốc độ của cửa sổ đó (crrev.com/c/7128058, Lỗi: 458027819).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Xoá các nội dung không cần thiết của
base/functional/callback_forward.htrên các tệp//chrome.cc, thực thi việc sử dụngcallback.hkhi các lệnh gọi lại thực sự được sử dụng (crrev.com/c/7200285, Lỗi: 40318405). Đã di chuyểnlogging::LoggingSettingstừbase/logging.hsang tiêu đề riêngbase/logging/logging_settings.hđể cải thiện hiệu quả biên dịch (crrev.com/c/7173024, relanding crrev.com/c/7160150 sau khi hoàn nguyên crrev.com/c/7170750). Đã di chuyển các lượt sử dụngbase::HexEncodesangbase::HexEncodeLowermới hơn (crrev.com/c/7103100, Lỗi: 456472080). - An toàn bộ nhớ (spanification): Di chuyển
WriteToPipevàWriteToPipeNoBestEfforttrongPipeBuildervàPipeConnectionkiểm thử đơn vị để chấp nhậnbase::span, khắc phục việc sử dụng vùng đệm không an toàn (crrev.com/c/7090293, Lỗi: 455758227). Đã chuyển đổi#pragma allow_unsafe_bufferstrên toàn bộ tệp thành macroUNSAFE_TODO()chi tiết trênchrome/(crrev.com/c/7132241, Lỗi: 409340989). Rút ngắnIOBuffer->span().first()thànhIOBuffer->first()(crrev.com/c/7159119).
ChromeDriver 143
Sửa lỗi
- Độ ổn định: Khắc phục sự cố Sử dụng sau khi giải phóng (UAF) trong
OverrideNetworkConditions. Con trỏ thô được lưu cho ứng dụng tiếp theo sẽ được giải phóng giữa các lệnh gọi liên tiếp; hiện con trỏ này đã được quản lý đúng cách (crrev.com/c/7047422, Lỗi: 42323833). - Kiểm thử: Đã khắc phục các kiểm thử cảm ứng ChromeDriver trên Android không ổn định bằng cách sử dụng API
WaitForConditionđể đồng bộ hoá đáng tin cậy hơn (crrev.com/c/6978928, Lỗi: 42321861). - DSE Prewarm: Tắt tính năng
Prewarmtrong ChromeDriver theo mặc định thông qua công tắc--disable-features=Prewarm, ngăn các trang được làm nóng trước can thiệp vào phiên chạy thử nghiệm và phát hiện mục tiêu (crrev.com/c/7007072, Lỗi: 431928370).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Đã hoán đổi
ref_counted.hchoscoped_refptr.htrong các tiêu đề//chromekhi chỉ dùng con trỏ thông minh, giúp cải thiện hiệu quả biên dịch (crrev.com/c/7080753, Lỗi: 40245294). Đã di chuyển các đối tượng truy cậpGURLsang các biến thểGet*(ví dụ:GetSpec()thay vìspec()) để cho biết rõ việc phân bổ chuỗi, ngăn chặn các hình phạt vô tình về hiệu suất (crrev.com/c/7002119, Lỗi: 448174617). - Kiểm thử: Đã xoá các mẫu kiểm tra dư thừa trong
devtools_client_impl_unittest.ccbằngADD_FAILURE()(crrev.com/c/6998270). Thêm một kiểm thử hồi quy chocrbug.com/413382905(crrev.com/c/6879417).
ChromeDriver 142
Tính năng mới
- Thông tin chẩn đoán: Đã thêm trạng thái
TERMINATION_STATUS_EVICTED_FOR_MEMORYđể phân biệt các quy trình bị trình duyệt chủ động chấm dứt (để tiết kiệm bộ nhớ) với các quy trình gặp sự cố do lỗi hết bộ nhớ (OOM). Hiện tại, lỗi này hoạt động giống hệt như lỗi OOM (hiển thị một thẻ buồn), nhưng đặt nền tảng cho việc xử lý riêng biệt trong tương lai (crrev.com/c/6991933, Lỗi: 394092280). - Chẩn đoán: Đã thêm
goog:processIDkhả năng vào phản hồi WebDriver, chức năng này trả về mã định danh tiến trình chính của trình duyệt dành cho máy tính. Điều này giúp ChromeDriver phù hợp vớimoz:processIDcủa Firefox và hỗ trợ kiểm thử các API hỗ trợ tiếp cận của nền tảng (crrev.com/c/5825307, Lỗi: 438884256). - Kiểm thử: Đã thêm tính năng hỗ trợ tải mã kiểm thử có cấu trúc lên ResultSink cho các kiểm thử tích hợp Python của ChromeDriver (crrev.com/c/6916708, Lỗi: 418015486).
Sửa lỗi
- Chẩn đoán: Sửa đổi hành vi của ChromeDriver khi Chrome thoát bình thường để không còn phát ra thông báo lỗi chung, gây nhầm lẫn liên quan đến việc sử dụng
user-data-dir. Giờ đây, thông báo này nêu rõ rằng phiên bản đã bị chấm dứt và hướng người dùng đến nhật ký chi tiết để biết lỗi cụ thể do Chrome gửi (crrev.com/c/6977507, Lỗi: 42323434). - Khởi chạy: Cập nhật cấu trúc khởi chạy của ChromeDriver để duy trì khả năng tương thích với các thay đổi của Selenium WebDriver phiên bản 4.16.0 (crrev.com/c/6630600).
- Android: Đã khắc phục
CheckAppInstalledtrên các phiên bản Android cũ (cũ hơn Android 11) mà trình quản lý gói không hỗ trợ cờ--user cur(crrev.com/c/6785949, Lỗi: 433885051). - Thử nghiệm: Khắc phục một lỗi khiến
IgnoreDuplicateNavsghi đè không chính xác các công tắc chức năng mặc định trong ChromeDriver. Tính năng này đã bị vô hiệu hoá đối với các phiên ChromeDriver và logicSwitches::SetFromSwitchesđã được điều chỉnh (crrev.com/c/6949166, Lỗi: 445332809).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Thay thế một số lệnh gọi
base::JSONWriter::Write()không dùng nữa bằngbase::WriteJson(), duy trì hành vi trả về một chuỗi trống khi không kiểm tra giá trị trả về (crrev.com/c/6969134, crrev.com/c/6929101, Lỗi: 443929217). Yêu cầu chọn tham gia rõ ràng đối với các lựa chọn phân tích cú pháp JSON không tuân thủ (ví dụ: cho phép nhận xét) trongbase::JSONReader::Readvàbase::JSONReader::ReadAndReturnValueWithError(crrev.com/c/6990988, crrev.com/c/6980533, Lỗi: 446188265). Xoá các pragma#pragma allow_unsafe_bufferstrên toàn tệp sau khi nỗ lực phân tách theo cách thủ công (crrev.com/c/6778035, Lỗi: 409340989). Dọn dẹp các lần sử dụng macroLazyInstancebị rò rỉ (crrev.com/c/6781377, Lỗi: 432815283). Đã thêm các tiêu đề bị thiếu chohttp_response_headers.hthông qua IWYU (crrev.com/c/6894196, Lỗi: 40216326). - An toàn bộ nhớ (spanification): Tự động span hoá nhiều con trỏ trên thư mục
chrome/cho bản dựng Linux, thêmCHECKkhông nghiêm trọng khi các tham số kích thước được coi là dư thừa (crrev.com/c/6734592, Lỗi: 431824299). - Thử nghiệm: Tạm thời tắt
testDoesntCrashOnClosingBrowserFromAsyncScripttrên macOS (crrev.com/c/6995358, Lỗi: 446461733). Đã sửa lỗi chính tả trong tên phương thức kiểm thử liên quan đến "Certificates" (Chứng chỉ) (crrev.com/c/6950683). Các tệp//chrome/testGN được định dạng tự động (crrev.com/c/6789277, Lỗi: 40760278). - FedCM: Ra mắt hàm
ShouldShowAccountsPassiveDialogchoIdentityDialogControllerđể đồng bộ kiểm tra xem có nên hiện hộp thoại tài khoản hay không, khắc phục sự cố liên quan đến các lượt kiểm tra không đồng bộ và hoạt động đo lường DevTools (crrev.com/c/6780413, Lỗi: 425801332). - DSE Prewarm: Đã thêm
Page.setPrewarmingAllowedvào Giao thức Công cụ cho nhà phát triển như một giải pháp ngắn hạn để bật hoặc tắt tính năng khởi động trước theo cách thủ công, sửa các thử nghiệm liên quan để đảm bảo các thử nghiệm này tương tác chính xác với trang chính (crrev.com/c/6847287, Lỗi: 431928370). Đã bật tính năngDSEPrewarmtrongfieldtrial_testing_config.jsoncho macOS và Windows sau khi giải quyết vấn đề về tính không ổn định (crrev.com/c/6951835, Lỗi: 431928370, Lỗi: 435621391). (Lưu ý: Lệnh CDP và việc bật thử nghiệm thực địa đều được hoàn nguyên do là những thay đổi có thể gây lỗi đối với người dùng WebDriver, lần lượt làm lộ các mục tiêu không mong muốn và gây ra các vấn đề khác ở hạ nguồn (crrev.com/c/6966133, crrev.com/c/6966161, Lỗi: 445883308)). - Dọn dẹp: Xoá các tham chiếu còn lại đến dự án
WebLayerkhông được hỗ trợ trong mã Android (crrev.com/c/6792520, Lỗi: 40272607).
ChromeDriver 141
Tính năng mới
- Kiểm thử: Thêm chế độ hỗ trợ cho cờ
--enable-per-test-tracingvàorun_wpt_tests.py, khớp với hành vi củarun_web_tests.py. Thao tác này truy xuất các sự kiện theo dõi JSON từ một vùng đệm ChromeDriver nội bộ và lưu các sự kiện đó vào thư mục kết quả kiểm thử (crrev.com/c/6820247, Lỗi: 434017035).
Sửa lỗi
- Chẩn đoán: Ngăn ChromeDriver in dấu vết ngăn xếp nội bộ của chính nó khi trả về lỗi
kTabCrashed. Điều này giúp tránh gây nhầm lẫn cho người dùng, đồng thời vẫn đảm bảo dấu vết ngăn xếp sự cố của trình kết xuất vẫn còn trong nhật ký (crrev.com/c/6841669, Lỗi: 395131239).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Thay thế các lệnh gọi
memsetcó khả năng không an toàn bằng quá trình khởi tạo tổng hợp C++ tiêu chuẩn (instance = {}) trênchrome/để tránh bỏ qua hàm khởi tạo và đảm bảo an toàn cho bộ nhớ (crrev.com/c/6875520, Lỗi: 435317390). Thêm các chỉ thị#includecòn thiếu cho//base/time/time.hthông qua IWYU (crrev.com/c/6832689, Lỗi: 40216326). Viết lại các chỉ thị bắt buộc về vùng đệm không an toàn (crrev.com/c/6828538). - Thử nghiệm: Đã thêm một thử nghiệm hồi quy cho
crbug.com/413382905(crrev.com/c/6879417). - Chuyển đổi khung hiển thị: Đã khôi phục bản sửa lỗi chuyển đổi khung hiển thị để cập nhật công việc đã hoàn thành trước khi lời hứa hoàn tất được giải quyết, sau khi một lần khôi phục suy đoán trước đó liên quan đến lỗi kiểm thử ChromeDriver được chứng minh là không chính xác (crrev.com/c/6846765, khôi phục crrev.com/c/6806850 sau khi khôi phục crrev.com/c/6808537).
ChromeDriver 140
Sửa lỗi
- Lựa chọn mục tiêu: Khắc phục vấn đề trong đó cửa sổ Công cụ cho nhà phát triển có thể cạnh tranh với trang chính để được chọn làm cửa sổ chính khi Chrome được khởi chạy bằng
--auto-open-devtools-for-tabs. Giờ đây, ChromeDriver sẽ loại trừ rõ ràng các mục tiêu có tiền tốdevtools://trong quá trình xác định cửa sổ chính (crrev.com/c/6769505, Lỗi: 427908560). - Lựa chọn mục tiêu: Ngăn ChromeDriver tính toán sai điểm giữa trong khung hiển thị của các phần tử bằng cách bỏ qua mọi thao tác cắt
overflow:hiddendo các phần tử mẹ áp đặt. Điều này giúp việc tính toán phù hợp với quy cách WebDriver và các trường hợpPerformActionskhác (crrev.com/c/6735230, Lỗi: 42322257). - Android: Đã khắc phục hàm
CheckAppInstalledtrên các phiên bản Android cũ (trước Android 11) khi cờ--user curcho trình quản lý gói không được hỗ trợ (crrev.com/c/6785949, Lỗi: 433885051). - Kiểm thử: Khắc phục tình trạng không ổn định trong bộ kiểm thử
chromedriver_py_testsdo tính năngDSEPrewarmgây ra. Giờ đây, ChromeDriver sẽ tắt trình kích hoạt khởi động trước trong khi một ứng dụng CDP được đính kèm để ngăn số lượng mục tiêu không mong muốn trong quá trình kiểm thử (crrev.com/c/6764274, Lỗi: 423465927, Lỗi: 431928370). - Thử nghiệm: Đã hoàn nguyên việc bổ sung hàm
ShouldShowAccountsPassiveDialogvàoIdentityDialogController(một phần của FedCM), gây ra một lỗi hồi quy (crrev.com/c/6780413, Lỗi: 425801332).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Đã thêm
std::vector#includebị thiếu thông qua Include What You Use (IWYU) (crrev.com/c/6652818, Lỗi: 40216326). Xoá các nội dung không cần thiết củagurl.h(crrev.com/c/6578272) và<queue>(crrev.com/c/6570349, Lỗi: 40318405) trên các tiêu đề//chrome. Đã giải quyếtIWYUchoNOTIMPLEMENTED()trong//chrome(crrev.com/c/6655452, Lỗi: 41493641). - An toàn bộ nhớ (spanification): Chạy công cụ spanification con trỏ tự động trên các bản dựng Linux, cập nhật mã để sử dụng các khoảng có kích thước đã biết (crrev.com/c/6734592, Lỗi: 431824299). Xoá các pragma
#pragma allow_unsafe_bufferstrên toàn tệp trênchrome/sau khi hoàn tất quá trình di chuyển (crrev.com/c/6778035, Lỗi: 409340989). Loại trừ các mục tiêuchrome/testkhỏi cảnh báo-Wexit-time-destructorsđể cho phép bật cảnh báo trên toàn cầu (crrev.com/c/6736532, Lỗi: 40031409, Lỗi: 430332953). Đã dọn dẹp các cách sử dụngLazyInstancebị rò rỉ trong//chrome(crrev.com/c/6781377, Lỗi: 432815283). - Dọn dẹp: Đã xóa cờ CLI
--debug-bidi-mappervì quá trình chuyển đổi để chạy BiDi Mapper trong một mục tiêu ẩn đã hoàn tất và ổn định (crrev.com/c/6672011, Lỗi: 408992812). - Dọn dẹp: Xoá các tham chiếu còn lại đến dự án
WebLayerkhông được hỗ trợ (crrev.com/c/6792520, Lỗi: 40272607). Tự động định dạng các tệp//chrome/testGN để rút ngắn các tham chiếu mục tiêu (crrev.com/c/6789277, Lỗi: 40760278). - Kiểm thử: Đã thêm một kiểm thử chấp nhận để xác minh bản sửa lỗi cho vấn đề
PerformActionspointerMove(crrev.com/c/6648646, Lỗi: 42322257). - Thử nghiệm: Đã nhận xét về phân đoạn tạo trình điều khiển song song của thử nghiệm
testBrowserWithUsedUserDataDir(và đã gửi một lỗi theo dõi) vì phân đoạn này gây ra lỗi trên macOS liên quan đến việc khoá độc quyền khi sử dụngchrome-headless-shell(crrev.com/c/6470455, Lỗi: 411407649, Lỗi: 380903149). - Thử nghiệm: Đã cập nhật trình bao bọc
run_cwt_chromedriver.pycho iOS để hỗ trợ đối số--platform-type(crrev.com/c/6771517, Lỗi: 427548014). - OWNERS: Đã xoá
nvitkovkhỏi tệpchrome/test/chromedriver/OWNERS(crrev.com/c/6771413).
ChromeDriver 139
Sửa lỗi
- Cấu trúc khởi tạo: Cập nhật cấu trúc khởi tạo ChromeDriver để duy trì khả năng tương thích với các bản cập nhật Selenium WebDriver phiên bản 4.16.0 (crrev.com/c/6630600).
- Phân tích cú pháp đối số: Kết hợp nhiều đối số
--js-flags(tương tự như cách xử lý--enable-features) thay vì chỉ lấy đối số cuối cùng được cung cấp. Điều này giúp cải thiện khả năng sử dụng khi truyền các cờ V8 phức tạp (crrev.com/c/6612042, Lỗi: 421941798).
Các thay đổi và tái cấu trúc nội bộ
- An toàn bộ nhớ (spanification): Thay thế các cách sử dụng
base::MakeStringPiece()không dùng nữa bằngstd::string_viewtrên//chrome/test(crrev.com/c/6628089, Lỗi: 422940464). Đã thêmbase/strings/string_view_util.hkhibase::as_string_view()được dùng, chuẩn bị cho các hoạt động di chuyển không gian tên trong tương lai (crrev.com/c/6625024, Lỗi: 423048781). - Các tiêu chuẩn C++: Cải thiện khả năng tuân thủ tính năng Include What You Use (IWYU) trên
//chromebằng cách đưa<vector>vào một cách rõ ràng (crrev.com/c/6652818),base/notimplemented.h(và xoábase/notreached.hkhi không dùng) (crrev.com/c/6655452, Lỗi: 41493641),base/strings/string_util.h(crrev.com/c/6607646),base/strings/string_number_conversions.h(crrev.com/c/6593576) và xoá các phần không cần thiết củabase/debug/stack_trace.h(crrev.com/c/6622838). - Thử nghiệm: Chuyển lựa chọn
--driver-loggingsangrun_wpt_tests.py, cho phép tập lệnh trích xuất dữ liệu ChromeDriver và trình duyệtstderrngay cả ở các cấp độ độ chi tiết thấp hơn (crrev.com/c/6608138, Lỗi: 421262910). - Thử nghiệm: Đã bật lại các thử nghiệm tích hợp ChromeDriver đã tắt trước đó: thử nghiệm chụp ảnh màn hình (
testTakeElementScreenshot*) (crrev.com/c/6598797, Lỗi: 42321815), thử nghiệm đóng cửa sổ thông qua Javascript (testCloseWindowUsingJavascript*) (crrev.com/c/6598978, Lỗi: 42321150) và thử nghiệm kích thước cửa sổheadless-shell(crrev.com/c/6621336, Lỗi: 42323661). - Thử nghiệm: Đã sửa
run_wpt_tests.py --stableđể xác định và sử dụng chính xác phiên bản ổn định hiện tại của Clank (Android) bằng cách phân tích cú pháp APK, đồng thời cập nhật tập lệnh để tải phiên bản ChromeDriver tương ứng từ Chrome for Testing (CfT) vào một thư mục tạm thời thay vì làm ảnh hưởng đến quá trình kiểm tra (crrev.com/c/6635694, Lỗi: 402548382). - Cơ sở hạ tầng bản dựng: Xoá một phần phụ thuộc bản dựng không cần thiết trên
write_build_config.pybằng cách không cho phép các mục tiêuandroid_resources()có tệp kê khai, vì việc hợp nhất tệp kê khai và đặt tên gói R.java hiện được xử lý bằng các thuộc tính chuyên biệt (crrev.com/c/6625266, Lỗi: 413331591). - FedCM: Đã sửa một cờ tính năng cấu hình Finch liên quan đến FedCM (crrev.com/c/6614137, Lỗi: 421959289).
ChromeDriver 138
Tính năng mới
- Quản lý tính năng hiển thị: Đã cập nhật hành vi của ChromeDriver cho các phân đoạn khung hiển thị để phù hợp với một nghị quyết gần đây của Nhóm công tác CSS: giờ đây, ChromeDriver luôn trả về một mảng có một phân đoạn duy nhất khi thiết bị có thể gập lại được sử dụng ở trạng thái phẳng hoặc cho tất cả các thiết bị không gập lại. Điều này phù hợp với hành vi của truy vấn nội dung nghe nhìn và giảm thiểu rủi ro nhận dạng vân tay (crrev.com/c/6469455, Lỗi: 414430842).
- Lựa chọn ưu tiên và trạng thái cục bộ (Android): Đã thêm tính năng hỗ trợ cho các chức năng
localStatevàprefskhi chạy ChromeDriver trên thiết bị Android. Điều này phụ thuộc vào ADB và yêu cầu một cờuser-data-dirtuỳ chỉnh; hiện tại, cờ này khởi tạo trạng thái bằng các mẫu mặc định (crrev.com/c/6397155, Lỗi: 406427226).
Sửa lỗi
- Tính ổn định: Khắc phục sự cố ChromeDriver xảy ra trên macOS khi người dùng đóng hộp thoại Trải nghiệm chạy lần đầu (FRE) thông qua nút "tiếp tục". Sự cố này xảy ra do việc ghi đè trạng thái lỗi
kTargetDetachedvà cố gắng truy cập vàoWebViewkhông hợp lệ (crrev.com/c/6538867, Lỗi: 410599467). - Kiểm thử hiệu suất: Đã khắc phục trình chạy kiểm thử
crossbenchtrên các bot Pinpoint Windows. Các bot này đã cố gắng xác định vị trí tệp nhị phân ChromeDriver bằng cách sử dụng đường dẫn../Release_x64không còn được dùng khi--browser=release_x64được truyền, khiến bot quay lại tải xuống tệp nhị phân cũ thay vì sử dụng bản dựng cục bộ (crrev.com/c/6502134).
Các thay đổi và tái cấu trúc nội bộ
- An toàn bộ nhớ (spanification): Thay thế các con trỏ chưa được kiểm tra trong
WebSocket::OnReadDuringHandshakevàWebSocket::OnReadDuringOpenbằngbase::span, giải quyết các cảnh báounsafe-buffer-usage(crrev.com/c/6557346, Lỗi: 354307328). Xoá các pragma#pragma allow_unsafe_bufferskhông cần thiết trênchrome/test/chromedriverkhông còn cần thiết sau các hoạt động di chuyển khác (crrev.com/c/6503154, Lỗi: 414858406). - Các tiêu chuẩn C++: Xoá các chỉ thị
#include "url/gurl.h"và#include <queue>thừa trên các tiêu đềchrome/, thêm các khai báo chuyển tiếp khi thích hợp để cải thiện thời gian biên dịch (crrev.com/c/6578272, crrev.com/c/6570349, Lỗi: 40318405). - Di chuyển API: Đã di chuyển
RSAPrivateKeysangcrypto::PrivateKeyvàSHA256HashStringsangcrypto::Sha256, xoá một trường hợp xử lý lỗi không còn dùng nữa vì các API tạo khoá mới là không thể sai lầm (crrev.com/c/6490294, Lỗi: 372283556). - Thử nghiệm: Đã thêm thuộc tính
OwnContributionEstimatevào các lệnh tự động hoá Compute Pressure API (cả CDP và các cách triển khai testdriver) (crrev.com/c/6373001, Lỗi: 402033762). - Kiểm thử: Đã sửa các kiểm thử tích hợp xác minh
ClearDisplayFeaturestrên các bot Tích hợp liên tục (CFT) bằng cách đơn giản hoá các câu nhận định để kiểm tra xem các phân đoạn khung nhìn có được xoá về kích thước khung nhìn mặc định hay không (crrev.com/c/6535067, Lỗi: 417195296). - Thử nghiệm: Tăng thời gian chờ cho các thử nghiệm Protected Audience WebDriver để giải quyết tình trạng không ổn định trên các bot CI chậm hơn (crrev.com/c/6494277).
ChromeDriver 137
Tính năng mới
- Quản lý tính năng hiển thị: Đã thêm các lệnh ChromeDriver để mô phỏng và xoá các tính năng hiển thị, triển khai các yêu cầu tự động hoá cho Viewport Segments API (CSS và JS). Điều này cho phép nhà phát triển kiểm thử theo chương trình các trường hợp đường gấp hoặc bản lề trên thiết bị có màn hình đôi hoặc thiết bị có thể gập lại (crrev.com/c/6368674, Lỗi: 40137084).
- BiDi: Đã cập nhật ChromeDriver để chạy BiDi Mapper trong một mục tiêu ẩn theo mặc định. Điều này giúp ngăn trang
data:,của trình liên kết gây ảnh hưởng đến phiên chạy thử nghiệm và khả năng hiển thị. Để gỡ lỗi trình liên kết, các ứng dụng có thể truyền cờ--debug-bidi-mapperđể chạy trình liên kết trong một thẻ hiển thị (crrev.com/c/6441064, relanding crrev.com/c/6433672 sau khi hoàn nguyên crrev.com/c/6439633, Lỗi: 402339952).
Sửa lỗi
- BiDi: Ngăn ChromeDriver đóng nhầm toàn bộ phiên trình duyệt khi xử lý các lệnh BiDi (chẳng hạn như
browsingContext.close) nếu ChromeDriver không theo dõi được các mục tiêu do các phiên CDP hoặc BiDi khác tạo. Giờ đây, tính năng này sẽ đồng bộ hoá rõ ràng các thẻ cấp cao nhất trước khi quyết định chấm dứt trình duyệt (crrev.com/c/6440293, Lỗi: 42323838). - BiDi: Phù hợp với quy cách BiDi WebDriver ở thượng nguồn bằng cách đảm bảo ChromeDriver xoá khả năng
goog:channelnếu khả năng này được truyền dưới dạng một chuỗi trống, xử lý khả năng này giống như một kênh bị thiếu (crrev.com/c/6438865, Lỗi: 409282307). - Đầu vào: Đã khắc phục vấn đề khiến các sự kiện chạm và con trỏ không thành công hoặc hoạt động không chính xác bằng cách cập nhật ChromeDriver để hỗ trợ toạ độ x và y phân số (dấu phẩy động) trong các lệnh di chuyển con trỏ (crrev.com/c/6440834, Lỗi: 409684333).
- Lựa chọn mục tiêu: Ngăn các iframe ngoài quy trình (OOPIF) của PDF được mở trong các khung hiển thị khách (khi tính năng
PdfOopifbị vô hiệu hoá) tràn vào danh sách mục tiêu cấp cao nhất. Logic lọc đã được mở rộng để loại trừ đúng cách các mục tiêu có tiền tốchrome-extension://này (crrev.com/c/6383500, Lỗi: 396611138).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Đã thay đổi để sử dụng
std::string_viewcho tên tệp trongLogMessagevà các sự kiện theo dõi, giải quyết các vấn đề về việc xử lý chuỗi kết thúc bằng giá trị rỗng gây ra các lần khôi phục trước đó (crrev.com/c/6430129, khôi phục crrev.com/c/6395097, khôi phục crrev.com/c/6387020 sau khi khôi phục crrev.com/c/6383699). - Các tiêu chuẩn C++: Hiện đại hoá các lệnh gọi
Environment::GetVartrên//chromeđể sử dụng API trả vềstd::optionalthay vì các tham số ngoài (crrev.com/c/6417343, Lỗi: 400758498). - Các tiêu chuẩn C++: Tái cấu trúc các trình trợ giúp xử lý dành riêng cho Windows từ
win_util.hvào một tiêu đềwindows_handle_util.hchuyên dụng để tránh các vấn đề về sự phụ thuộc vòng tròn (crrev.com/c/6418805, Lỗi: 406023316). - Thử nghiệm: Đã thêm trình xử lý miền
Browserdành riêng cho Android và triển khai APIBrowser.getWindowForTargetđể hỗ trợ các thử nghiệm tạo cửa sổ Android (crrev.com/c/6427605, Lỗi: 404932444). - Thử nghiệm: Khắc phục tình trạng không ổn định trong các thử nghiệm macOS do các tiện ích mất quá nhiều thời gian để khởi động (crrev.com/c/6423229, Lỗi: 407804497).
- Kiểm thử: Tạm thời vô hiệu hoá việc tạo
user-data-dirsong song trongtestBrowserWithUsedUserDataDirkhi chạy trênchrome-headless-shell, vì việc này xung đột với tính năng khoá độc quyền trên macOS (crrev.com/c/6470455, Lỗi: 411407649, Lỗi: 380903149). - Tiện ích: Cập nhật các kiểm thử Chrome để vượt qua khi thử nghiệm
ExtensionManifestV2Unsupportedđược bật. Đây là một bước cơ bản, mặc dù bản dùng thử vẫn bị vô hiệu hoá cho đến khi có bản cập nhật trong các kho lưu trữ khác (crrev.com/c/6415997, Lỗi: 367395349). (Lưu ý: Một lần thử trước đó để bật bản dùng thử này thông qua cấu hình đã bị huỷ crrev.com/c/6397497 huỷ crrev.com/c/6358257). - Các phần phụ thuộc: Đã triển khai phần phụ thuộc
catapulttheo cách thủ công và cập nhật các tệppydepscũng như các tham chiếudevil_utilliên quan (crrev.com/c/6480814, crrev.com/c/6466865, relanding crrev.com/c/6406098 after revert crrev.com/c/6448910, Bug: 397459590).
ChromeDriver 136
Tính năng mới
- Vòng đời của trình duyệt: Đã thêm một khả năng dành riêng cho Chrome
quitGracefully, buộc ChromeDriver cố gắng dừng trình duyệt một cách thích hợp (bằng cách sử dụngBrowser.closehoặc SIGTERM) thay vìSIGKILLmặc định. Điều này giúp các trình gỡ lỗi nhưrrcó thời gian trích xuất dữ liệu bản ghi của chúng trước khi quy trình kết thúc (crrev.com/c/6322538, relanding crrev.com/c/6269180 sau khi hoàn nguyên nhanh crrev.com/c/6320536, Lỗi: 339644807). - Kiểm thử: Đã truyền đối số
run_wpt_tests.py --wrapperbằng cách tạo một tập lệnh trình bao bọc tạm thời có tiền tố là tệp nhị phân trình duyệt với trình gỡ lỗi (ví dụ:rr) và các đối số của trình gỡ lỗi. Điều này giải quyết vấn đề ChromeDriver không thể thay thế trực tiếp tệp nhị phân khiargsđược xử lý dưới dạng các công tắc (crrev.com/c/6271108, Lỗi: 339644807). - Thử nghiệm: Đã bật tính năng dịch theo lựa chọn ưu tiên trong
TranslateEnabledTestđể hỗ trợ môi trường thử nghiệm nơi ChromeDriver quản lý quy trình trình duyệt và bỏ qua quy tắc hạn chế mới--remote-debugging-portkhi--user-data-dirlà ngầm định (crrev.com/c/6354089, Lỗi: 327797500). - DevTools: Đã thêm tính năng hỗ trợ cho tính năng nhiều phiên bản của DevTools để mở một thẻ mới trong một cửa sổ khác trên Android (crrev.com/c/6352169, Lỗi: 401269942, Lỗi: 382183406).
Sửa lỗi
- Lựa chọn mục tiêu: Khắc phục vấn đề trong đó các iframe ngoài quy trình (OOPIF) của PDF được mở trong các khung hiển thị khách không được lọc ra khỏi danh sách mục tiêu cấp cao nhất khi tính năng
PdfOopifbị tắt. Bộ lọc này được mở rộng để bao gồm tiền tốchrome-extension, giúp giải quyết lỗi và bao gồm phạm vi cho các tiện ích Chrome MV3 tạo thẻ (crrev.com/c/6383500, Lỗi: 396611138). - Lựa chọn mục tiêu: Đã khắc phục một lỗi hồi quy khiến lệnh
getWindowHandles()không thành công với trạng tháiconnection refusedkhi nhắm đến các Ứng dụng Chrome đóng gói (crrev.com/c/6317161, Lỗi: 396622746).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Đã triển khai lại thay đổi sử dụng
std::string_viewcho tên tệp trongLogMessagevà các sự kiện theo dõi, cải thiện khả năng tương thích với các cấu trúc ghi nhật ký Rust không đảm bảo các chuỗi kết thúc bằng giá trị rỗng (crrev.com/c/6387020, triển khai lại crrev.com/c/5765705 sau khi hoàn nguyên crrev.com/c/6383699 và một lần hoàn nguyên khác crrev.com/c/6395097). - Các tiêu chuẩn C++: Thay thế các lệnh gọi
base::Value::Clone()dư thừa để tối ưu hoá hiệu suất (crrev.com/c/6361818). Đã chặn các cảnh báo-Wunsafe-buffers-in-libc-callskhác trong các tệp dành riêng cho Windows để dọn dẹp đầu ra bản dựng (crrev.com/c/6369920, Lỗi: 390223051). - Tiện ích: Đã huỷ việc thêm mục
fieldtrial_testing_config.jsoncho giai đoạnExtensionManifestV2Unsupporteddo một vấn đề (crrev.com/c/6397497, huỷ crrev.com/c/6358257, Lỗi: 367395349, Lỗi: 406523920). - Tài liệu: Cải thiện tài liệu kiểm thử ChromeDriver dành riêng cho Android (crrev.com/c/6354040).
ChromeDriver 135
Tính năng mới
- BiDi: Cập nhật BiDi Mapper để kế thừa các quyền của ChromeDriver khi
--enable-unsafe-extension-debuggingđược chỉ định. Điều này cho phép các ứng dụng WebDriver BiDi kiểm thử hiệu quả những tiện ích yêu cầu các quyền mà thường do ứng dụng WebDriver nắm giữ (crrev.com/c/6288627, Lỗi: 393500934).
Sửa lỗi
- Kiểm thử: Bật lại và cập nhật các kỳ vọng cho một số kiểm thử WDSpec từng được đánh dấu là không thành công. Điều này khôi phục mức độ tuân thủ quy cách cho các bài kiểm thử đạt (crrev.com/c/6310420).
Các thay đổi và tái cấu trúc nội bộ
- Dọn dẹp: Xoá mọi dấu vết của Lacros (bao gồm cả
IS_CHROMEOS_LACROSvà dữ liệu kiểm thử có liên quan) khỏichrome/test/vì Lacros đang bị ngừng sử dụng, tiêu chuẩn hoá trênIS_CHROMEOS(crrev.com/c/6284446, Lỗi: 354842935). - Dọn dẹp: Xoá mọi dấu vết của tiện ích
md5sumsau khi thay thế bằngdevil_util, dọn dẹp các phần phụ thuộc bản dựng cũ (crrev.com/c/6309939, Lỗi: 397452007). - Các tiêu chuẩn C++: Xoá không gian tên
chrome::khỏiResultCodevàIsNormalResultCode(), di chuyển các không gian tên này sang không gian tên chung, đồng thời xoá các hoạt động nhập khởi động ChromeOS không còn dùng nữa (crrev.com/c/6196899, Lỗi: 41050580). - An toàn bộ nhớ: Đơn giản hoá lệnh gọi
std::lower_boundtrong ChromeDriver bằng cách tận dụngstd::ranges::lower_bound(crrev.com/c/6223172, Lỗi: 392116519). Ngăn chặn cảnh báounsafe_libc_callđối với các tệp không tuân thủ được xác định ban đầu để chuẩn bị cho việc thực thi trong tương lai (crrev.com/c/6187925, Lỗi: 390223051). Đánh dấu giá trị trả về củastd::to_arraylàconstexprđể cải thiện độ an toàn và đánh giá thời gian biên dịch (crrev.com/c/6298909).
ChromeDriver 134
Tính năng mới
- Giảm hoạt động theo dõi tỷ lệ thoát (DIPS): Hỗ trợ ChromeDriver được chuyển lại cho tính năng Giảm hoạt động theo dõi tỷ lệ thoát, sử dụng lệnh
RunBounceTrackingMitigations. Bài kiểm thử tích hợp được tái cấu trúc để sử dụng các trang riêng biệt, đảm bảo các lần chuyển hướng có trạng thái được ghi lại chính xác trước khi lệnh thực thi. Tính năng này hỗ trợ quy cáchnav-tracking-mitigationsvà được triển khai trong//chrome(crrev.com/c/4935955, Lỗi: 1474656). (Lưu ý: Ban đầu được thêm vào crrev.com/c/4873672 và sau đó được hoàn nguyên). - BiDi: Đã cập nhật ChromeDriver để sử dụng các thuộc tính tiện ích BiDi tiêu chuẩn của WebDriver với tiền tố
goog:, phù hợp với các thay đổichromium-bidiở nguồn. Thuộc tínhchannelcũ không còn được phép nữa (crrev.com/c/6179410). - Windows: Thêm một tài nguyên phiên bản vào tệp nhị phân
chromedriver.exetrên Windows (crrev.com/c/6114586, Lỗi: 385300323).
Sửa lỗi
- MPArch/Targets: Đã khắc phục một lỗi hồi quy trong đó các mục tiêu của Tiện ích Chrome (
chrome-extension://) được phát hiện và đính kèm không chính xác trong quá trình xác định mục tiêu chính trên ChromeOS, khiến các lệnh tiếp theo (chẳng hạn như lệnh điều hướng) không thực hiện được. Giờ đây, các mục tiêu của tiện ích sẽ được bỏ qua đúng cách trong giai đoạn ban đầu này (crrev.com/c/6183202, Lỗi: 385241097). - MPArch/Targets: Đã khắc phục một lỗi hồi quy khác khiến các mục tiêu thẻ cho
background_pagecủa Tiện ích không được lọc đúng cách khỏi các khung hiển thị web cấp cao nhất khi tính năng hỗ trợ mục tiêu tiện ích bị tắt (crrev.com/c/6160774, Lỗi: 385731198). - MPArch/Navigation: Khắc phục vấn đề trong đó một thẻ có thể tạm thời không có trang đang hoạt động nào được đính kèm trong quá trình kích hoạt MPArch, khiến ChromeDriver coi thẻ đó là trạng thái lỗi. Giờ đây, ChromeDriver sẽ đợi thẻ nhận được một trang mới và hoàn tất quá trình điều hướng trước khi phân giải trạng thái (crrev.com/c/6177606).
- Xử lý nhật ký: Khắc phục sự cố (lỗi
DCHECKtrongbase::Value()) do việc cắt không đúng các chuỗi nhật ký chứa ký tự nhiều byte. Logic này đã được cập nhật để sử dụng tính năng phát hiện ranh giớiUnicodeStringthay vì chỉ kiểm tra độ dàistd::string, đảm bảo các điểm mã hợp lệ (crrev.com/c/6210809, Lỗi: 367752739). - Kiểm thử: Đã di chuyển hầu hết các WPT liên quan đến việc kết xuất trước (ngoại trừ một số WPT có vấn đề đã biết về API) từ
content_shellsangheadless_shell, vì hoạt động tái cấu trúc MPArch gần đây cho phép ChromeDriver chạy các WPT này một cách chính xác (crrev.com/c/6168830, Lỗi: 42323502, Lỗi: 366257368).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Thay thế các cách sử dụng
base::rangesbằngstd::rangestiêu chuẩn (crrev.com/c/6200893, crrev.com/c/6177197, Lỗi: 386918226). Viết lại các mẫub ? "true" : "false"để sử dụngbase::ToString(bool)nếu có thể (crrev.com/c/6165810, Lỗi: 335797528). Xoá hàmStringPrintfNonConstexpr()không an toàn và thay thế bằng các lựa chọn định dạng chuỗi an toàn hơn (crrev.com/c/6149756). Thay thế phép toán con trỏ (+ std::size) bằng các trình lặpbegin/endtiêu chuẩn để giải quyết các cảnh báo về vùng đệm không an toàn (crrev.com/c/6217045, Lỗi: 392116519). - Dọn dẹp: Xoá cờ tính năng
FedCmIdpSigninStatusvà cờ thời gian chạy của cờ này (crrev.com/c/6111321, Lỗi: 381211734). (Lưu ý: Một lần xóa bỏ trước đó đã bị hủy bỏ crrev.com/c/6082405 do gây ra lỗi).
ChromeDriver 133
Tính năng mới
- Cấu trúc: Tái cấu trúc ChromeDriver để hỗ trợ Cấu trúc nhiều trang (MPArch) và các mục tiêu thẻ.
WebViewImplhiện kết nối với các mục tiêu của thao tác nhấn phím Tab thông quaAutoAttach. Các lệnh trước đây có một trang hiện sẽ tìm trang đang hoạt động trong một thẻ. Thay đổi này cho phép xem xét các trang nền của Tiện ích. Giờ đây, bạn có thể nhắm đến các trang này thông qua khả năngenable_extension_targets(theo mặc định, các mục tiêu của tiện ích sẽ bị bỏ qua) (crrev.com/c/5961156, Lỗi: 379767670, Lỗi: 42323502). Khắc phục một lỗi hồi quy khiến các trang URLchrome-extension://bị đưa vào không chính xác dưới dạng mục tiêu của tiện ích; lựa chọn được chuyển về chỉtype=background_page(crrev.com/c/6093588, Lỗi: 383141569). Đã di chuyểnenableExtensionTargetssang phần Tuỳ chọn của Chrome thay vì là một khả năng cấp cao (crrev.com/c/6093032). - Kiểu cũ: Thiết lập lại chế độ hỗ trợ cho các tham chiếu đến phần tử có nhiều khoá. Tính năng không có tài liệu này (thường được dùng để tạo các thành phần tham chiếu tương thích với cả chế độ W3C và không phải W3C) hiện được hỗ trợ chính thức và nằm trong các kiểm thử tích hợp (crrev.com/c/6063257, Lỗi: 379584343).
Sửa lỗi
- Tính ổn định: Ngăn ChromeDriver chặn vô thời hạn khi xử lý lệnh
browsingContext.close. Bằng cách sử dụng một cơ chế khác để xác định xem có cần đóng trình duyệt hay không, giờ đây ChromeDriver có thể xử lý đúng các lời nhắcbeforeunloadmà không bị dừng (crrev.com/c/6080431, Lỗi: 42323838, Lỗi: 379049702). - Điều hướng: Khắc phục lỗi khiến trang giả có URL
about:blank?testgây ra tình trạng bị treo. Heuristic dùng để xác định một cửa sổ mới không phản hồi (baseURL==about:blankvàdocumentURL!=about:blank) hiện xử lý chính xác các URL chuỗi truy vấn này dưới dạng một trường hợp đặc biệt (crrev.com/c/6038039, Lỗi: 377410086). - Điều hướng: Thêm logic để thử lại các lệnh không thành công với lỗi
AbortedByNavigation. Giờ đây, ChromeDriver sẽ thử thực hiện lệnh này nhiều lần trước khi từ bỏ với lỗiTimeouttiêu chuẩn (crrev.com/c/6012427, Lỗi: 42323825). - Chẩn đoán: Chuyển tiếp lỗi
kTargetCrashedtrực tiếp thông quaNavigationTracker. Nếu mục tiêu gặp sự cố trong quá trình phát hiện đường đi, thì lỗi cụ thể này hiện được hiển thị cho người dùng thay vì thời gian chờ chung, giúp cải thiện khả năng chẩn đoán (crrev.com/c/6032612, Lỗi: 377410086). - Android: Đã khắc phục các lượt tìm kiếm mục tiêu của thẻ trong
chrome_android_impl.cc(crrev.com/c/6110492, Lỗi: 384781876). - Kiểm thử: Khắc phục tình trạng không ổn định trong một số quy trình kiểm thử thay đổi kích thước cửa sổ trên
win11-arm64(ví dụ: nhấp vào các phần tử bị che khuất). Giờ đây, các kiểm thử sẽ liên tục truy vấn kích thước cửa sổ bên trong sau một thao tác đổi kích thước cho đến khi kích thước này đăng ký chính xác chiều cao dương, tính đến việc vẽ lại cửa sổ chậm (crrev.com/c/6012658, Lỗi: 378470046). - Kiểm thử: Khắc phục nhiều vấn đề trong các kiểm thử tích hợp bằng cách ánh xạ các lỗi kết nối chung của Python tới
WebSocketConnectionClosedException, đơn giản hoá việc xử lý lỗi (crrev.com/c/6054134), tránh tình huống tương tranh bằng cách sử dụngSendCommandthay vìPostCommandkhi dự kiến có các tác dụng phụ tức thì (crrev.com/c/6054137) và thay thế sự phụ thuộc vào các hiệu ứng tức thì củaExecuteScriptbằng các cơ chế phát hiện hoạt động điều hướng đáng tin cậy hơn (crrev.com/c/6063040, Lỗi: 42323825). - Thử nghiệm: Đã khôi phục việc xoá cờ tính năng
FedCmIdpSigninStatusvì việc xoá cờ này gây ra lỗi (crrev.com/c/6082405, khôi phục crrev.com/c/6078693, Lỗi: 384866916, Lỗi: 381211734). - Công cụ: Đã thêm hỗ trợ cho lệnh
Printtrong tập lệnhlog_replay(crrev.com/c/6010809, Lỗi: 378451938).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Xoá biểu đồ
Mojo.InvalidUTF8String, cho phép dọn dẹp các tiêu đề mojo công khai và các tầng IWYU tiếp theo (crrev.com/c/6133861, Lỗi: 40509710, Lỗi: 386793084). - Các tiêu chuẩn C++: Tránh phân bổ trong
WaitableEvent::Wait()bằng cách chuyển từstd::listsangbase::circular_deque(crrev.com/c/6097198). - Các tiêu chuẩn C++: Hàm khởi tạo và hàm huỷ trống do người dùng xác định theo mặc định trên cơ sở mã
chrome/(nếu có thể) (crrev.com/c/6101911, crrev.com/c/6056220, Lỗi: 381119547). - An toàn bộ nhớ (spanification): Di chuyển các mảng kiểu C sang
std::arraytrênchrome/trong nỗ lực chung nhằm giải quyết các cảnh báo-Wunsafe-buffer-usage(crrev.com/c/6043879, Lỗi: 378069401). Sử dụngsize_tnghiêm ngặt trong các hàm khoảng (crrev.com/c/6026238, crrev.com/c/6020621). - Kiểm thử: Đã chuyển
{ref,crash}teststoàn màn hình ngược dòng vềwpt_internal/vìtestdriverhiện hỗ trợ các chế độ này (crrev.com/c/6088404). - Thử nghiệm: Đã sửa
wptrunnercho iOS để xác định vị trí chính xác của trình bao bọc ChromeDriver khi sử dụng các thư mục đầu ra không phải mặc định (ví dụ://out/*-ios-wpt-fyi-rel/) bằng cách kết nối--build-directorymột cách chính xác (crrev.com/c/6014940, Lỗi: 374199289, Lỗi: 355218109). - Thử nghiệm: Đã thêm kiểm thử tích hợp
testBrowserCrashWhileWaitingForEventsđể minh hoạ các trường hợp hồi quy mà lỗi nghiêm trọng không được ứng dụng chú ý (crrev.com/c/6025145, Lỗi: 379049702). - Thử nghiệm: Đã chặn các WPT cụ thể gặp sự cố khi chạy trong
headless_shellkết hợp với ChromeDriver để ổn định các trình tạo (crrev.com/c/6032163, Lỗi: 377410086).
ChromeDriver 132
Tính năng mới
- Thử nghiệm: Đã thêm chế độ hỗ trợ cho các tham số dòng lệnh
repeatvàretry-limitvào các bài kiểm thử tích hợp ChromeDriver, ánh xạ các tham số này với các đối sốisolated-script-test-repeatvàisolated-script-test-launcher-retry-limittiêu chuẩn (crrev.com/c/5938195, Lỗi: 374681919). Đối với các kiểm thử được thực thi cục bộ (không phải CI),retry-limitmặc định đã được thay đổi thành 0 (crrev.com/c/5953326, Lỗi: 374681919). - WebSockets: Triển khai
WebSocketConnectionvà các lớp liên quan trongEmbeddedTestServer, cho phép các kiểm thử liên quan đến WebSocket di chuyển khỏiSpawnedTestServer. Điều này bao gồm việc tạo khung theo giao thức và đăng ký trình xử lý đơn giản (crrev.com/c/5849732, Lỗi: 40812029).
Sửa lỗi
- Tính ổn định: Khắc phục sự cố ChromeDriver có thể xảy ra nếu lệnh nhấp khiến trình duyệt đóng, bằng cách xử lý đúng trạng thái lỗi
kTargetDetachedđược giới thiệu trong các hoạt động tái cấu trúc trước đó (crrev.com/c/5934524, Lỗi: 42323264). - Tính ổn định: Khắc phục sự cố xảy ra không liên tục trong kiểm thử tích hợp
testClickNavigateRemoteToLocaltrên Mac ARM64 bằng cách giải quyết tình huống tương tranh (crrev.com/c/5975526, Lỗi: 375971185). - Điều hướng: Đã khắc phục các lệnh
GoBackvàGoForward. Trước đây, các lệnh này sẽ không thành công nếuPage.getNavigationHistoryđược gọi trong khi tài liệu đang chuyển đổi khỏi trạng thái hoạt động (cho biết một thao tác điều hướng đang diễn ra). Giờ đây, ChromeDriver sẽ thử lại lệnh một cách chính xác trong trường hợp này (crrev.com/c/6011739, Lỗi: 378433873). - Thực thi tập lệnh: Đảm bảo rằng các tập lệnh kích hoạt thao tác điều hướng hoặc đóng cửa sổ sẽ trả về chính xác lỗi
ScriptTimeouttiêu chuẩn nếu phía trình duyệt không đảm bảo kết quả, nhắc người dùng tránh các cấu trúc kiểm thử không rõ ràng (crrev.com/c/5934265, Lỗi: 372883701). - Thực thi tập lệnh: Khắc phục vấn đề khiến chức năng phát lại nhật ký không thành công với lỗi "phản hồi lệnh không mong muốn" (crrev.com/c/5961142, Lỗi: 42323342).
- Mã lỗi: Đã sửa đổi quy trình xử lý lỗi của ChromeDriver để không còn buộc tất cả các trường hợp ngoại lệ có thuộc tính "code" vào một "lỗi javascript" chung nữa. Điều này đảm bảo các lỗi tiêu chuẩn như "tham chiếu phần tử cũ" (từ
call_function.js) và "trạng thái phần tử không hợp lệ" (từ hàm Selenium AtomsCLEAR) được truyền chính xác đến người dùng (crrev.com/c/5937893, Lỗi: 42323409). Cải thiện khả năng xử lý lỗi trongGetElementTagNameđể diễn giải chính xác thông tin tên thẻ bị thiếu là "đối tượng không phải là một Phần tử" (crrev.com/c/5929087). - BiDi: Khắc phục vấn đề khiến các phiên BiDi không khởi tạo được khi sử dụng hồ sơ người dùng tuỳ chỉnh. Trang được tải của hồ sơ tuỳ chỉnh có thể ngăn BiDiMapper khởi động; ChromeDriver hiện đảm bảo thẻ đầu tiên luôn tải
data:,để cung cấp một nền tảng sạch cho trình liên kết (crrev.com/c/5960656, Lỗi: 366886096). - Chế độ ẩn danh: Đã khắc phục một lỗi khiến ChromeDriver không thể tạo thẻ mới khi hoạt động ở Chế độ ẩn danh (crrev.com/c/5952980, Lỗi: 42323352).
- Kiểm thử: Khắc phục tình trạng không ổn định trong kiểm thử tích hợp
testScriptNavigateRemoteToLocal(thất bại với tỷ lệ 8,33%) và thêm kiểm thử tích hợp C++ để tái tạo và xác minh bản sửa lỗi cho tình huống tương tranh (crrev.com/c/6010867, Lỗi: 378387680). - Thử nghiệm: Bật lại nhiều kiểm thử tích hợp không ổn định trước đây trên Mac (
testWindowMinimize) và Windows (ChromeDownloadDirTest.testFileDownloadAfterTab,InvalidCertificateTest.*) cũng như trên toàn cầu (testShadowDomFindElement, kiểm thử ảnh chụp màn hình của phần tử). Tạm thời di chuyển các kiểm thử WPT không ổn địnhcss/css-scrollbars/trở lại trình bao nội dung từ trình bao không giao diện (crrev.com/c/5953708, crrev.com/c/5948803, crrev.com/c/5941351, crrev.com/c/5941098, crrev.com/c/5959254, Lỗi: 42323825, Lỗi: 40848017, Lỗi: 40736504, Lỗi: 40176424, Lỗi: 40927590).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Đã tăng phần phụ thuộc của trình liên kết
chromium-bidiđể kết hợp các bản sửa lỗi và bản cập nhật giao thức mới nhất (crrev.com/c/5953339, crrev.com/c/5865478, Lỗi: 4226). (Lưu ý: Thay đổi về trình liên kết đã được tạm thời khôi phục do lỗi WPT và sau đó được triển khai lại (crrev.com/c/5961113)). - Cấu trúc: Giảm thiểu việc sử dụng đối tượng phiên cục bộ theo luồng trên ChromeDriver để ngăn chặn lỗi chia sẻ trạng thái giữa các kiểm thử và đơn giản hoá việc xử lý phiên một cách rõ ràng (crrev.com/c/5978486, Lỗi: 42323555). Tái cấu trúc các kiểm thử tích hợp C++ để sử dụng một bộ kiểm thử dùng chung (crrev.com/c/5971474, Lỗi: 42323555).
- Dọn dẹp: Xoá các giải pháp cũ không còn dùng được nữa dành riêng cho chế độ "cũ không có giao diện người dùng", vì mã
chrome-headless-shellcũ không còn xuất hiện trong Chrome nữa (crrev.com/c/5961602, Lỗi: 42323387). - Dọn dẹp: Xoá tệp
java_tests.txtkhông dùng đến, một tàn dư của các bài kiểm thử chấp nhận ChromeDriver đã bị loại bỏ trước đó (crrev.com/c/5970994, Lỗi: 357737793). - Thử nghiệm: Đã thêm một bài kiểm thử tích hợp C++ để xác minh rằng ChromeDriver không tạo nhầm các phiên song song có cùng
user-data-dirhoặc các URL bị rò rỉ giữa các phiên, điều này có thể gây ra tình trạng không ổn định (crrev.com/c/5961137, Lỗi: 375312517). - Kiểm thử: Đảm bảo rằng các phiên bản ChromeDriver tạm thời do các kiểm thử tích hợp tạo ra sẽ tắt nhanh nhất có thể để giải phóng tài nguyên (crrev.com/c/5997970, Lỗi: 375974725).
ChromeDriver 131
Tính năng mới
- BiDi: Đã tăng phần phụ thuộc của trình liên kết
chromium-bidilên phiên bản 0.8.0, kết hợp các bản cập nhật giao thức mới nhất và bản sửa lỗi (crrev.com/c/5899240, crrev.com/c/5865478, Lỗi: 4226). - Quyền truy cập vào DOM: Thêm tính năng hỗ trợ cho các gốc tối khép kín trong lệnh
GetElementShadowRoot. Trước đây, lệnh này trả về lỗiNoSuchShadowRootkhi cố gắng truy cập vào một gốc bóng đóng (crrev.com/c/5923865, Lỗi: 372834222). - Quyền truy cập vào DOM: Triển khai tính năng hỗ trợ cho các giá trị nhận dạng cửa sổ và khung, cho phép các tập lệnh đã thực thi trả về các tham chiếu đến cửa sổ hoặc khung (bao gồm cả OOP Iframe) để huỷ tham chiếu thêm (crrev.com/c/5890437, crrev.com/c/5923555, Lỗi: 366272556, Lỗi: 40229283).
- WebAuthn: Mở rộng API tự động hoá WebAuthn để bao gồm các thuộc tính
userNamevàuserDisplayName(crrev.com/c/5905423, Lỗi: 367915823).
Sửa lỗi
- Đầu vào: Đã khắc phục tình huống tương tranh khi nhấp chuột vào các khung hình từ xa bằng cách định tuyến các sự kiện chuột đến tổ tiên cùng nguồn cao nhất của khung hình đích, thay vì chỉ gửi chúng đến khung hình trên cùng (crrev.com/c/5836968, Lỗi: 42323535).
- Đầu vào: Đã sửa định dạng dấu thời gian được gửi bằng lệnh
Input.dispatchTouchEventtừ mili giây thành giây, khắc phục sự cố trong quá trình kiểm thử sự kiện con trỏ WPT (crrev.com/c/5924253, Lỗi: 360918166). - Thử nghiệm: Đã bật lại nhiều thử nghiệm ChromeDriver trên Mac (crrev.com/c/5923569, crrev.com/c/5922823, crrev.com/c/5921444, crrev.com/c/5920851, crrev.com/c/5921442) và Windows (crrev.com/c/5923955) vì các lỗi không ổn định liên quan không còn tái hiện được nữa.
Các thay đổi và tái cấu trúc nội bộ
- An toàn bộ nhớ (spanification): Thay thế việc sử dụng con trỏ không an toàn bằng
base::spantrongnet::HttpUtil(crrev.com/c/5854420) và di chuyểnbase::File::WriteAtCurrentPos()sang thành phần tương đương dựa trên khoảng (crrev.com/c/5818972). Viết lại các giá trị con trỏ bản đồ (ví dụ: trongstd::map,std::unordered_map) thànhraw_ptr(crrev.com/c/5867189, Lỗi: 329428315). - Các tiêu chuẩn C++: Thay thế macro thuộc tính Abseil (
ABSL_ATTRIBUTE_*) bằng macrobase/tiêu chuẩn (crrev.com/c/5852373). Tránh các bản sao không mong muốn bằng cách thay thế các chuỗi/vectơ truyền theo giá trị bằngstd::string_viewhoặc các tham chiếu const khi thích hợp, đồng thời xoá các trình đủ tiêu chuẩnconstkhông cần thiết khỏi các đối sốstd::string_view(crrev.com/c/5914620, crrev.com/c/5906184, Lỗi: 369952985). - Cơ sở hạ tầng: Đã định cấu hình Fuchsia để sử dụng ChromeDriver nhằm kiểm soát
web-engine(crrev.com/c/5867896, Lỗi: 40935291). - Thử nghiệm: Di chuyển một thử nghiệm WebAuthn có khung được phân vùng từ trình chạy shell nội dung cũ sang Chrome không giao diện người dùng bằng ChromeDriver, vì trình chạy cũ sẽ sớm ngừng hỗ trợ API WebAuthn testdriver (crrev.com/c/5920770, Lỗi: 372169469).
ChromeDriver 130
Tính năng mới
- BiDi: Tăng mức độ phụ thuộc của BiDi Mapper, tìm nạp các bản cập nhật giao thức và bản sửa lỗi mới nhất từ
chromium-bidi(crrev.com/c/5850570, relanding crrev.com/c/5837065 sau khi hoàn nguyên crrev.com/c/5840080; crrev.com/c/5717956, Lỗi: 4226). - BiDi: Đã cập nhật ChromeDriver để cung cấp
unhandledPromptBehaviortrực tiếp cho Mapper thông qua lệnhsession.newkhi khởi tạo một phiên BiDi. Thao tác này hoàn tất quá trình di chuyển khỏiMapperOptions(crrev.com/c/5682934, crrev.com/c/5766077, Lỗi: 42323841, Lỗi: 356371297). - Kiểm thử: Đã thêm tính năng hỗ trợ đối số
--chromedrivervào tập lệnhbisect-builds.pycho các bản dựng trên máy tính. Nhờ đó, tập lệnh có thể tự động tải xuống và sử dụng đúng phiên bản ChromeDriver trong quá trình phân đôi cho các kiểm thử phụ thuộc WebDriver/ChromeDriver (crrev.com/c/5861048, Lỗi: 352344089).
Các thay đổi và tái cấu trúc nội bộ
- Các tiêu chuẩn C++: Đã giải quyết các vấn đề về "quy tắc 5" trong nhiều lớp. Vì trình bổ trợ kiểu Chrome nhất quyết sử dụng hàm huỷ ngoài dòng mà không bắt buộc hàm tạo di chuyển ngoài dòng, nên trình biên dịch đã ngầm xoá các toán tử di chuyển và âm thầm quay lại các bản sao. Chúng tôi đã thêm các phần khai báo bị thiếu này (crrev.com/c/5846757, Lỗi: 364788123).
- Kiểm thử: Xoá bản tóm tắt kết quả kiểm thử
wptrunnerbằng cách thay thế chuỗichromeđược mã hoá cứng bằng sản phẩm thực tế đã dùng và ẩn cấu phần phần mềmcommandchi tiết khỏi đầu ra tóm tắt (crrev.com/c/5825633, Lỗi: 41494889). - Kiểm thử: Đã khắc phục hàng loạt lỗi kiểm thử trong các kiểm thử tích hợp ChromeDriver trên macOS 15 (Mac15) bằng cách tăng gấp đôi thời gian chờ cụ thể, vì các kiểm thử trên hệ điều hành này cần nhiều thời gian hơn đáng kể so với trên Mac14. 4 thử nghiệm cảm biến ảo cũng được thêm vào danh sách bỏ qua do tính không ổn định (crrev.com/c/5817455, Lỗi: 354939744).
- Thử nghiệm: Tắt thử nghiệm
ChromeDriverSiteIsolation.testClickNavigateLocalToLocalkhông ổn định trên máy Mac (crrev.com/c/5806894, Lỗi: 361521805) và thử nghiệmChromeDriverTest.testClickElement*ObscuredByScrollBarkhông ổn định trên Windows 11 (crrev.com/c/5804083, Lỗi: 360058651). - Kiểm thử: Xoá các kiểm thử chấp nhận ChromeDriver (tải các phiên bản Chrome cũ xuống để kiểm thử với ChromeDriver hiện tại) do một số vấn đề về cơ sở hạ tầng. Sau này, các thư viện này có thể được thêm lại vào CI bằng tính năng tự động chuyển đổi (crrev.com/c/5812142, Lỗi: 357737793).
ChromeDriver 129
Tính năng mới
- BiDi: Cập nhật trình trợ giúp khởi tạo phiên ChromeDriver để gửi lệnh
session.newđến BiDi Mapper, cho phép trình ánh xạ trực tiếp xử lý các chức năng. Đây là bước đầu tiên để xoáMapperOptions(crrev.com/c/5741432, Lỗi: 356371297). (Lưu ý: Một thay đổi liên quan crrev.com/c/5754093 cung cấpunhandledPromptBehaviorđã xử lý đã được hoàn nguyên crrev.com/c/5755744 do mức độ kiểm thử giảm). - Áp lực tính toán: Thêm các lệnh tiện ích mới để quản lý nguồn áp lực ảo, triển khai phần Tự động hoá của quy cách Áp lực tính toán. Các lệnh này được phân tích cú pháp và chuyển tiếp đến lớp CDP (crrev.com/c/5666583, Lỗi: 347031400).
- Tiện ích MV2: Cập nhật các thử nghiệm thực hiện hành vi MV2 để sử dụng
ScopedTestMV2Enablertrong quá trình thử nghiệm theo nhóm về việc ngừng sử dụng Manifest V2 của tiện ích (crrev.com/c/5685054, Lỗi: 339061151).
Sửa lỗi
- Hoạt động chuyển đổi tuần tự cổ điển: Theo dõi các đối tượng đã xem khi chuyển đổi tuần tự một
Settrong kết quả thực thi tập lệnh WebDriver cổ điển, ngăn chặn các vòng lặp vô hạn và chấp nhận các chế độ ghi đè củaArray.prototype.includes(crrev.com/c/5765833, Lỗi: 357472850). (Lưu ý: Sau đó, thay đổi này đã được hoàn nguyên crrev.com/c/5773175 do một lỗi hồi quy WPT).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Tăng mức độ phụ thuộc của BiDi Mapper để bao gồm các bản sửa lỗi và bản cập nhật giao thức mới nhất từ
chromium-bidi(crrev.com/c/5756587, crrev.com/c/5717956, Lỗi: 4226). - An toàn bộ nhớ (spanification): Thay thế việc sử dụng bộ đệm không an toàn trong
WebSocketFrameParser::Decode,MaskWebSocketFramePayloadvàWriteWebSocketFrameHeaderbằngbase::span(crrev.com/c/5764863, crrev.com/c/5743019, crrev.com/c/5722108, Lỗi: 40284755, Lỗi: 354307327). Đã thêm#pragma allow_unsafe_bufferstrênchrome/*để chuẩn bị cho các bản sửa lỗi khác (crrev.com/c/5717950, Lỗi: 40285824) và chuyển đổi các macroUNSAFE_BUFFERS()không tuân thủ thànhUNSAFE_TODO()(crrev.com/c/5786346). Viết lại các trườngbase::spanthànhbase::raw_span(crrev.com/c/5515096, Lỗi: 332587642). - Các tiêu chuẩn C++: Xoá việc sử dụng các mảng có độ dài thay đổi (VLA) nguy hiểm trong cơ sở mã bằng cách đánh dấu rõ ràng độ dài mảng là
constexpr(crrev.com/c/5738737, Lỗi: 349656479). Đã bao gồm các tiêu đề<unordered_map>cần thiết được kéo theo cách bắc cầu trước đây (crrev.com/c/5792881). - Cấu trúc: Đã huỷ phân nhánh việc triển khai
WebSocketEncoderbằng cách hoàn nguyên quá trình di chuyển bị tạm dừng sang//services/network/public/cpp/servervà tập trung logic trở lại trong//net/serverđể đảm bảo các bản cập nhật nhất quán (crrev.com/c/5768214, Lỗi: 40205564).
ChromeDriver 128
Tính năng mới
- Các chức năng: Cho phép sử dụng từ điển cho chức năng
unhandledPromptBehavior, phù hợp với cấu trúc chức năng tiêu chuẩn, mặc dù Mapper chưa hoàn toàn tuân thủ (crrev.com/c/5692204, crrev.com/c/5682934, Lỗi: 42323841). - Khởi động: Đã thêm đối số dòng lệnh
--ignore-explicit-portvào ChromeDriver. Giải pháp tạm thời này buộc ChromeDriver bỏ qua mọi cổng được cung cấp một cách rõ ràng, thay vào đó tìm và liên kết với một cổng trống, giải quyết các xung đột cổng TCP trong quá trình thực thi kiểm thử nền tảng web (dự kiến sẽ bị xoá sau M132) (crrev.com/c/5724574, crrev.com/c/5703976, Lỗi: 42323836).
Sửa lỗi
- Cảm biến: Đã sửa lệnh
ExecuteUpdateVirtualSensorđể sử dụngSendCommand()thay vìSendCommandAndGetResult(), vì lệnh CDPsetSensorOverrideReadingskhông trả về giá trị (crrev.com/c/5703589). - FedCM: Khắc phục một tình huống tương tranh trong các thử nghiệm FedCM ChromeDriver bằng cách không còn khẳng định rằng
NoSuchDialogđược trả về khi thực sự có một hộp thoại, ngăn chặn lỗi nếu hộp thoại xuất hiện quá nhanh (crrev.com/c/5713515, Lỗi: 346530330). - Kiểm thử: Bật lại các kiểm thử trình xác thực ảo WebAuthn trên máy Mac sau khi vấn đề cơ bản (crbug.com/40233722) được khắc phục (crrev.com/c/5635806, Lỗi: 329130177).
- Thông báo lỗi: Sửa lỗi chính tả trong thông báo lỗi cho lệnh
execute/async(crrev.com/c/5697913).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Tăng mức độ phụ thuộc của BiDi Mapper, mang đến các tính năng giao thức mới nhất, bản sửa lỗi và thông tin cập nhật về kỳ vọng của WPT từ dự án
chromium-bidingược dòng (crrev.com/c/5717956, crrev.com/c/5644823, crrev.com/c/5630727, crrev.com/c/5615110, crrev.com/c/5614670, Lỗi: 4226, Lỗi: 347863537, Lỗi: 324436866). - Thay thế các lượt sử dụng phương thức
GrowableIOBuffer::StartOfBufferkhông dùng nữa bằngspan, cải thiện độ an toàn của bộ nhớ bằng cách loại bỏ các con trỏ chưa được kiểm tra (crrev.com/c/5706088, Lỗi: 329476354). - Spanified các phương thức
DecodecủaWebSocketFrameParserđể cải thiện độ an toàn của bộ nhớ (crrev.com/c/5722108, Lỗi: 354307327). - Xoá các phần còn lại của
absl::optionalbằng cách xoá các tiêu đề Abseil không dùng nữa, di chuyển sangstd::optional(crrev.com/c/5691505, Lỗi: 40242125). - Thay đổi ChromeDriver để xử lý tất cả các loại mục tiêu không xác định (bao gồm cả
shared_storage_worklet) dưới dạngWebViewInfo::kOtherthay vì coi chúng là lỗi. Điều này cho phép Chrome giới thiệu các loại mục tiêu mới mà không làm gián đoạn ngay lập tức WPT (crrev.com/c/5680542, crrev.com/c/5679146, Lỗi: 42323839). - Đã thêm một mục tiêu của trình cài đặt cho trình tạo
linux-builder-perfđể tạo các tệp nhị phân đã xoá biểu tượng cho các kho lưu trữ phân đôi và định cấu hình trình tạo pinpoint để chấp nhậnadditional_compile_targetskhác nhau (crrev.com/c/5668198, Lỗi: 344643694). - Đã cập nhật
run_performance_tests.pyđể tìm và truyền vị trí ChromeDriver đếncrossbenchtrong quá trình tạo hiệu suất (crrev.com/c/5624538, Lỗi: 338629299). - Đã chuyển phần phụ thuộc
crossbench(crrev.com/c/5681849). - Đánh dấu
FedCmSpecificTest.testClickErrorMoreDetailsvàFedCmSpecificTest.testClickErrorGotItlà không ổn định trên máy Mac (crrev.com/c/5704320, crrev.com/c/5677564, Lỗi: 352821422, Lỗi: 346530330). - Đã tắt thử nghiệm
BidiTest.testFocusInFirstTabkhông ổn định (crrev.com/c/5676686, Lỗi: 350916212).
ChromeDriver 127
Sửa lỗi
- Tính ổn định: Khắc phục sự cố ChromeDriver xảy ra khi nhận được lệnh
target.detachFromTarget(hoặc sự kiệntarget.detachedFromTarget) trong khi Công cụ cho nhà phát triển đang tích cực xử lý các lệnh khác, ngăn chặn việc phát hành sớm các đối tượngWebViewvàDevToolsClient(crrev.com/c/5527584, Lỗi: 339773537). - Tính ổn định: Khắc phục vấn đề trong đó lệnh
Switch To Windowcó thể trả về "lỗi không xác định" không chính xác nếu một khung hiển thị web tách ra trong quá trình thực thi lệnh; giờ đây, lệnh này sẽ bỏ qua chính xác lỗi nội bộ "không tìm thấy khung hiển thị web", dẫn đến phản hồi tiêu chuẩn "không có cửa sổ như vậy" nếu cửa sổ mục tiêu thực sự đã đóng (crrev.com/c/5583730, Lỗi: 338616700). - Độ ổn định: Đảm bảo ChromeDriver chịu được việc tách đích trong khi cập nhật danh sách WebView nội bộ. Nếu một mục tiêu tách ra trong quá trình cập nhật, ChromeDriver hiện sẽ thử lại thay vì trả về một lỗi không chuẩn, giảm tình trạng không ổn định trong các môi trường mà cửa sổ được tạo và huỷ nhanh chóng (crrev.com/c/5565103, Lỗi: 338616700, Lỗi: 4771).
- Điều hướng: Đã thêm logic vào ChromeDriver để chờ một thao tác điều hướng do đầu cuối từ xa phát hiện trong khi tìm kiếm các phần tử. Điều này ngăn ChromeDriver trả về lỗi không chuẩn hoặc gặp sự cố với
DCHECKkhi một thao tác điều hướng trùng với thao tác tìm phần tử (crrev.com/c/5563113, hoàn nguyên crrev.com/c/5563420, relanding crrev.com/c/5562089, Lỗi: 4771). - BiDi: Khắc phục tình trạng tương tranh giữa ChromeDriver và BiDiMapper trong quá trình tạo phiên. Giờ đây, ChromeDriver sẽ đợi lệnh
browsingContext.getTreetrả về một danh sách không trống trước khi kết thúc lệnh NewSession, đảm bảo thẻ mặc định mới tạo được đăng ký đúng cách (crrev.com/c/5575497, Lỗi: 341048786, Lỗi: 1503101). - BiDi: Đã khắc phục vấn đề là tiêu điểm vẫn nằm trong thẻ nền BiDiMapper sau khi tạo phiên thay vì thẻ người dùng đang hoạt động bằng cách cấp tiêu điểm một cách rõ ràng cho thẻ người dùng đầu tiên (crrev.com/c/5594070, Lỗi: 341048786, Lỗi: 1503101).
- BiDi: Ngừng ChromeDriver cố gắng đính kèm một Mục tiêu khi xử lý các lệnh BiDi (chẳng hạn như
browsingContext.close) để ngăn các lệnh CDP bị treo vô thời hạn nếu một lời nhắc của người dùng đang mở, uỷ quyền hoàn toàn việc xử lý cho lớp BiDi đã kết nối (crrev.com/c/5541915, hoàn nguyên crrev.com/c/5539818, relanding crrev.com/c/5522393, Lỗi: 4758). - FedCM: Đã khắc phục thất bại trong kiểm thử WPT
fedcm-loginhint.https.htmltrong đó một hộp thoại bị đánh dấu là đã đóng không chính xác; giờ đây, trạng thái chỉ được cập nhật nếu thao tácselectAccountthực sự thành công (crrev.com/c/5398379, Lỗi: 331237776). - Kiểm thử: Đã khắc phục lỗi
DCHECKtrong quá trình phân tích cú pháp JSON khi một ký tự trùng khớp chính xác với ranh giớikExtendedASCIIStart(crrev.com/c/5565276, Lỗi: 40284755). - Kiểm thử: Đã khắc phục kiểm thử
scrollend-event-fires-to-iframe-window.htmlWPT bằng cách sử dụng phần tử iframe làm nguồn gốc cuộn và làm tròn các đầu vào di chuyển con trỏ thành số nguyên, ngăn chặn lỗi ChromeDriver với các vị trí chạm phân số (crrev.com/c/5570150, Lỗi: 340956654). - Kiểm thử: Cải thiện thông tin chẩn đoán trong các kiểm thử tích hợp ChromeDriver bằng cách in các đường dẫn đã thử khi
run_py_tests.pykhông tìm thấy tệp nhị phân của trình duyệt (crrev.com/c/5604204, Lỗi: 4781).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Tăng mức độ phụ thuộc của BiDi Mapper, theo kịp các bản cập nhật giao thức và bản sửa lỗi mới nhất (crrev.com/c/5614670, crrev.com/c/5593796, crrev.com/c/5537892, crrev.com/c/5471839, Lỗi: 4226).
- Thay thế các cách sử dụng
NOTREACHED()bằngNOTREACHED_IN_MIGRATION()trên thư mụcchrome/để chuẩn bị cho việc tạoNOTREACHED()một cách nghiêm ngặt[[noreturn]](crrev.com/c/5539004, Lỗi: 40580068). - Đã bật tính năng tạo
THIRD_PARTY_NOTICES.txtcho ChromeDriver bằng công cụlicenses.pyđể tuân thủ các yêu cầu về việc phân phối (crrev.com/c/5596355, Lỗi: 4777). - Xoá chế độ hỗ trợ
run_wpt_tests.pychocontent_shell, vì phạm vi WPT của Chromium đang chuyển hoàn toàn sangheadless_shell+ ChromeDriver (crrev.com/c/5589930). Sắp xếp lại các nút chuyểnwptrunnertheo từng trình nhúng để điều chỉnh thay đổi này mà không ảnh hưởng đến chức năng (crrev.com/c/5589793, Lỗi: 338412391). - Hợp nhất logic để phát hiện và xử lý hộp thoại JavaScript bằng cách di chuyển logic này từ
JavaScriptDialogManagertrực tiếp vàoDevToolsClientImpl, loại bỏ lớp trình quản lý riêng biệt để đơn giản hoá việc kiểm thử và suy luận (crrev.com/c/5545630, Lỗi: 4757). - Tắt
PureBidiTest.testBrowsingContextTreeIsNotEmptytrên máy Mac do tính không ổn định (crrev.com/c/5588665, Lỗi: 343891977). - Cập nhật các yêu cầu BiDi WPT để tính đến các bản cập nhật gần đây của Trình liên kết (crrev.com/c/5615110, Lỗi: 4226, Lỗi: 324436866).
- Đã thêm các kiểm thử đơn vị cho
WebView::SendBidiCommandvàBidiTrackerđể tăng mức độ sử dụng mã (crrev.com/c/5588400, Lỗi: 341048786, Lỗi: 1503101).
ChromeDriver 126
Tính năng mới
- BiDi: Đã cập nhật ChromeDriver để cung cấp công tắc
--disable-background-timer-throttlingkhi khởi chạy trình duyệt cho phiên WebDriver BiDi, ngăn các thẻ nền bị điều tiết (crrev.com/c/5515013, Lỗi: 4762). - BiDi: Thêm tính năng hỗ trợ cho BiDi Mapper để gửi thông báo gỡ lỗi (
sendDebugMessage) khi cần ghi nhật ký chi tiết. ChromeDriver đánh dấu các sự kiện này làbidi messagesđể phân tích cú pháp, mặc dùBidiTrackerhiện bỏ qua các sự kiện này (crrev.com/c/5465782, Lỗi: 4753). - Cổ điển: Triển khai tính năng tự động chấp nhận mọi hộp thoại
beforeunload(cảnh báo), tuân thủ tiêu chuẩn WebDriver quy định rằng các hộp thoại này không bao giờ được xuất hiện trong phiên Cổ điển (crrev.com/c/5517510, Lỗi: 4757).
Sửa lỗi
- Cổ điển: Xoá giới hạn tối đa dư thừa về số lần thử trong logic truy xuất phần tử. Giờ đây, việc truy xuất chỉ bị giới hạn bởi thời gian chờ ngầm định, ngăn chặn các trường hợp mà thao tác có thể thất bại sớm và trả về không chính xác lỗi
NoSuchExecutionContextkhông theo tiêu chuẩn (crrev.com/c/5478668, Lỗi: 4379). - Cổ điển: Đã khắc phục một lỗi hồi quy khiến ChromeDriver phản hồi bằng
javascript errorthay vì lỗiinvalid selectorkhi một yêu cầu truy xuất sử dụng chiến lược vị trí không hợp lệ (crrev.com/c/5490662, Lỗi: 4743). - Cổ điển: Đảm bảo các lệnh cửa sổ trên Android (Phóng to, Thu nhỏ, Toàn màn hình) trả về lỗi
unsupported operationtuân thủ tiêu chuẩn thay vì tiếp tục, vì trình duyệt Android không được hỗ trợ các thao tác này (crrev.com/c/5490224, Lỗi: 4689). - Cổ điển: Đã sửa ChromeDriver để không bao giờ trả về mã lỗi nội bộ
kChromeNotReachable; giờ đây, ChromeDriver sẽ trả về lỗikSessionNotCreatedtiêu chuẩn một cách thích hợp khi máy khách HTTP không thể kết nối với trình duyệt (crrev.com/c/5476390, Lỗi: 4379). - Cổ điển: Đã cố định ChromeDriver để không bao giờ trả về lỗi
kNoSuchExecutionContextkhông theo tiêu chuẩn khi thực thi các lệnh cửa sổ (crrev.com/c/5483606, Lỗi: 4379). - Cổ điển: Xoá mã lỗi
kForbiddenkhông dùng đến và không được hỗ trợ khỏi danh sách mã lỗi được hỗ trợ (crrev.com/c/5476927, Lỗi: 4379). - BiDi: Đã cập nhật ChromeDriver để nhắc người dùng trước khi đóng thẻ Mapper chuyên dụng, phù hợp với các thay đổi ở nguồn
chromium-bidi(crrev.com/c/5508600, Lỗi: 4761).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Tăng mức độ phụ thuộc của BiDi Mapper, mang đến các tính năng mới nhất và bản sửa lỗi từ dự án
chromium-bidi(crrev.com/c/5490428, crrev.com/c/5471839, crrev.com/c/5509316, crrev.com/c/5458234, Lỗi: 4226). (Lưu ý: Một thay đổi về trình liên kết đã được một người duy trì tạm thời huỷ và sau đó áp dụng lại (crrev.com/c/5374839, crrev.com/c/5374366)). - Thay thế các lượt sử dụng
base::StringPiecebằngstd::string_viewtrên//chrome(crrev.com/c/5467746, Lỗi: 40506050). - Xoá việc sử dụng
std::to_string()trong//chrome, thay thế bằngbase::NumberToString()hoặcbase::FormatNumber()(crrev.com/c/5505593, Lỗi: 335672557). - Đã xoá chế độ hỗ trợ cho công tắc
--remote-debugging-addressở chế độ không có giao diện người dùng cũ, vì quyền truy cập từ xa không được bảo vệ vào Giao thức Chrome DevTools được coi là quá nguy hiểm (crrev.com/c/5512634, Lỗi: 327558594). - Xoá các quy tắc bản dựng Fuchsia khỏi
//chrome, ngoại trừ ChromeDriver (crrev.com/c/5473870, Lỗi: 41481724). - Di chuyển các tham chiếu
TODO(crbug.com/...)cũ trên toàn bộ cơ sở mã sang định dạng mã nhận dạng trình theo dõi lỗi mới (TODO(b/...)) (crrev.com/c/5492605, crrev.com/c/5486477, crrev.com/c/5461380, Lỗi: 321899722). - Đã tắt các kiểm thử WebAuthn (trình xác thực) trên máy Mac (cả cho chế độ không có giao diện người dùng và
chromedriver_py_tests) do một lỗi phức tạp cơ bản, cho phép nâng cấp các bot lên macOS 14 (crrev.com/c/5525435, crrev.com/c/5518820, Lỗi: 329130177). - Đã tắt trình tạo WPT cho
content_shelldo gặp khó khăn khi chạy WPT cùng với ChromeDriver và Content Shell (crrev.com/c/5512439, Lỗi: 40214293). - Đã triển khai lại một thay đổi giúp cập nhật
focus-navigationWPT để sử dụngShift+Tabthông quatest_driver.action_sequence()cho thao tác điều hướng quay lại. Khắc phục lỗi trongfocus-utils.jskhi mã khoá không chính xác (E050thay vìE008) được dùng cho phím Shift (crrev.com/c/5467843, hoàn nguyên crrev.com/c/5466531, relanding crrev.com/c/5463903, Lỗi: 40597271). - Thêm
crossbenchvàchromedrivervào các mục tiêu tạo hiệu suất (crrev.com/c/5521874, Lỗi: 338627700).
ChromeDriver 125
Tính năng mới
- Tư thế thiết bị: Đã thêm các lệnh ChromeDriver để quản lý tư thế thiết bị, hỗ trợ phần Tự động hoá của quy cách Tư thế thiết bị. Điều này cho phép ghi đè tư thế thiết bị do phần cứng đặt và xoá chế độ ghi đè thông qua các lệnh mở rộng (crrev.com/c/5437993, Lỗi: 330376761).
Sửa lỗi
- BiDi: Đã thay đổi bộ nhớ trung gian của lệnh BiDi đến
idtừDoublethànhbase::Value. Điều này đảm bảoidđược phản hồi chính xác trong phản hồi mà không có dấu thập phân hoặc phần phân số ngoài dự kiến sau khi chuyển đổi tuần tự JSON (crrev.com/c/5444225, Lỗi: 4676). - FedCM: Đã triển khai lại thay đổi để bật CORS trong điểm cuối xác nhận danh tính sau khi IDP sẵn sàng (crrev.com/c/5440132, hoàn nguyên crrev.com/c/5381316, triển khai lại crrev.com/c/5370086, Lỗi: 40284123).
- FedCM: Khắc phục lỗi đánh dấu không đúng hộp thoại là đã đóng bằng cách đảm bảo hộp thoại chỉ được đánh dấu là đã đóng nếu lệnh
selectAccountthành công. Điều này giải quyết các lỗi kiểm thử khiselectAccountđược gọi mà không có bộ chọn tài khoản dự kiến (crrev.com/c/5398379, Lỗi: 331237776). Tránh gọifedcm_get_and_select_first_accountkhi không mong muốn bộ chọn tài khoản để ngăn kích hoạt lỗi này (crrev.com/c/5398800). - Thử nghiệm: Đã khắc phục lỗi trong thử nghiệm
popover-light-dismiss.htmlWPT bằng cách kết hợp các chuỗi hành động và sử dụng tài liệu của khung chính làm nguồn gốc cho hành độngpointerUp, ngăn ChromeDriver gửi không chính xác các sự kiệnpointerUpđồng thời trên các khung (crrev.com/c/5402096, Lỗi: 325981758). - Kiểm thử: Đã sửa
wptrunnerđể chuyển tiếp chính xác đầu rastderr(bao gồm cả nhật ký trình duyệt được ghi khi sử dụng--enable-chrome-logs) đến cấu phần phần mềmstderrthay vìcrash_log, đồng thời chuyển các lỗi của bộ kiểm thử (chứa dấu vết ngăn xếp của trình duyệt) sangcrash_log(crrev.com/c/5437023, Lỗi: 41494889). - Thử nghiệm: Đã sửa
wptrunnerđể định tuyến nhật ký trình duyệt đến đúng cấu phần phần mềm thử nghiệm bằng cách nhóm đầu ra theo quy trình ChromeDriver, ngăn nhật ký xen kẽ và nhật ký không liên kết trong quá trình phiên chạy thử nghiệm song song (crrev.com/c/5320681, Lỗi: 41494889).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Đã tăng mức độ phụ thuộc của BiDi Mapper, tích hợp các điểm cải tiến giao thức và bản sửa lỗi mới nhất (crrev.com/c/5433300, crrev.com/c/5393442, Lỗi: 4226). (Lưu ý: Một lần tăng trước đó crrev.com/c/5374366 đã được hoàn nguyên crrev.com/c/5374839 và sau đó được triển khai lại với các kiểm thử không ổn định bị vô hiệu hoá và giấy phép được cập nhật crrev.com/c/5374914).
- Chẩn đoán: Đã kết nối
StackTracecủa Chrome với các trường hợp ngoại lệ của ChromeDriver. Điều này sẽ hiển thị dấu vết ngăn xếp của trình duyệt trong thông báo lỗi khi một phiên bị xoá do trang/thẻ gặp sự cố (ví dụ: con trỏ treo trên máy Mac), giúp cải thiện đáng kể khả năng gỡ lỗi (crrev.com/c/5374371, Lỗi: 330009945). - Thử nghiệm: Tạm thời tắt thử nghiệm tích hợp
testTakeLargeElementViewportScreenshotkhông ổn định trên máy Mac (cụ thể làmac-arm64) (crrev.com/c/5447515, Lỗi: 333826980). - Kiểm thử: Đã cập nhật các đối số khởi chạy ChromeDriver trong môi trường kiểm thử (CEL) để khớp với cú pháp Selenium 4 trở lên (crrev.com/c/5448812, Lỗi: 308885357).
- Kiểm thử: Trích xuất chính xác dòng lệnh
chromeđược dùng để chạy từng kiểm thử WPT từ nhật kýchromedrivervào một cấu phần phần mềm ResultDB có tên làcommand. Điều này giúp gỡ lỗi theo cách thủ công bằngrun_blink_wptserve.py(crrev.com/c/5441189, Lỗi: 41494889). - Phần phụ thuộc: Đã xoá
Closurekhỏi danh sách phần phụ thuộcselenium-atoms, do đó xoáClosurekhỏi thông báo của bên thứ ba của ChromeDriver (crrev.com/c/5424804, Lỗi: 4226). - Phần phụ thuộc: Xoá các phần phụ thuộc không dùng đến trên
dynamic_annotationstrong kho lưu trữ cơ sở (crrev.com/c/3398908, Lỗi: 1282422). - Định dạng: Đã áp dụng cấu hình
clang-formatmới cho các tiêu đề Windows có vấn đề (crrev.com/c/5367127, Lỗi: 329138753).
ChromeDriver 124
Tính năng mới
- BiDi: Đã thêm một bước tạo để giảm thiểu tập lệnh
BiDiMappertrước khi nhúng tập lệnh đó vào ChromeDriver, vì trình ánh xạ nguồn hiện được tải xuống mà không được giảm thiểu từ CIPD (crrev.com/c/5310075, Lỗi: 4226). - WebAuthn: Đã thêm lệnh
SetCredentialProperties, cho phép các ứng dụng cập nhật cờ sao lưu cho thông tin đăng nhập WebAuthn (crrev.com/c/5296389, Lỗi: 40945430). - WebAuthn: Hiển thị các cờ sao lưu WebAuthn thông qua WebDriver bằng cách thêm
defaultBackupEligibilityvàdefaultBackupStatevào lệnh "Thêm trình xác thực ảo" vàbackupEligibilityvàbackupStatevào lệnh "Thêm thông tin đăng nhập" (crrev.com/c/5297117, Lỗi: 40945430). - Kiểm thử: Đã thêm chế độ hỗ trợ cho đối số dòng lệnh
--failfastvào các bài kiểm thử tích hợp ChromeDriver Python, dừng chạy kiểm thử khi gặp lỗi đầu tiên để hỗ trợ gỡ lỗi (crrev.com/c/5374546). - Thử nghiệm: Đã thêm tính năng hỗ trợ content-shell cho lệnh webdriver
SetRPHRegistrationModethông qua APItestdriver-vendor.js(crrev.com/c/5205730, Lỗi: 1359103).
Sửa lỗi
- Tính ổn định: Di chuyển quy trình kiểm tra thời gian chờ hết hạn vào bên trong phần nội dung của vòng lặp thăm dò và chờ trong
ChromeImpl::SetWindowBounds. Việc này khắc phục vấn đề trong đó, khi tải cao, thời gian chờ có thể hết trước khi vòng lặp đầu tiên lặp lại (crrev.com/c/5366899, Lỗi: 4642). - Hiệu suất: Giảm thiểu thời gian chờ trong
ChromeImpl::SetWindowBoundsbằng cách chỉ áp dụng thời gian chờ giảm theo hàm mũ nếu ranh giới cửa sổ chưa đạt đến trạng thái mong muốn, giảm độ trễ thiết lập WPT (crrev.com/c/5366457, Lỗi: 4642). - Khởi động: Đã cập nhật ChromeDriver để sử dụng
--user-data-dirthay vì--data-pathkhi chỉ định thư mục dữ liệu chocontent_shell, phù hợp với cách đọc cổng DevTools đang hoạt động (crrev.com/c/5226609, Lỗi: 1295373).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Tăng cường phần phụ thuộc BiDi Mapper, nắm bắt các tính năng và bản sửa lỗi mới nhất của giao thức (crrev.com/c/5374366, crrev.com/c/5349491, crrev.com/c/5317650, Lỗi: 4226). (Lưu ý: Bản cập nhật này đã được khôi phục trong thời gian ngắn rồi được triển khai lại do lỗi kiểm thử crrev.com/c/5374839, crrev.com/c/5368680, crrev.com/c/5319423).
- Thay thế các cách sử dụng
absl::optionalbằngstd::optionaltrên toàn bộ cơ sở mã sau khi chuyển đổiabsl::optionalthành bí danh kiểu (crrev.com/c/5296147, Lỗi: 1500249). - Mở rộng phạm vi phủ sóng
MiraclePtr(raw_ptr) cho các vùng chứa tiêu chuẩn bổ sung, bao gồmstd::list,std::unordered_set,base::flat_set,std::stackvàstd::queue(crrev.com/c/5306923, Lỗi: 325302189). - Đã chuyển đổi
WriteBigEndian()để sử dụng lượt chuyển đổibase::numericsbyte hoặcBigEndianWriter(hiện chấp nhậnbase::span), cải thiện độ an toàn khi ghi các byte có thứ tự byte lớn (crrev.com/c/5202348, Lỗi: 1490484). - Chuyển sang sử dụng ChromeDriver để chạy Kiểm thử nền tảng web (WPT) bằng
content_shell(ngoại trừ các kiểm thử ảo và kiểm thử tham chiếu đang chờ bản sửa lỗi ở nguồn trên) (crrev.com/c/5347371, Lỗi: 40214293). - Chuyển đổi tất cả các kiểm thử web Generic Sensor hiện có để sử dụng
test_driver.jsvà cảm biến ảo thay vì các mô phỏng JS/Mojo, phù hợp với phần Tự động hoá mới trong thông số kỹ thuật Generic Sensor (crrev.com/c/4770867, Lỗi: 1278377, Lỗi: 1471996). - Cải thiện quy trình tạo giấy phép bằng cách thêm
append_notices.pyđể tạo thông tin ghi nhận cho các phần phụ thuộcBiDiMappervà cập nhật lệnh gọilicenses.pyđể chỉ dựa vào tệp READMEselenium-atomscho thông báo của bên thứ ba (crrev.com/c/5350601, crrev.com/c/5339957, Lỗi: 4729, Lỗi: 4735).
ChromeDriver 123
Tính năng mới
- FedCM: Hiện hộp thoại phương thức cho quy trình một nút tài khoản, bao gồm cả việc thêm hỗ trợ cho các khung hiển thị phương thức trong giao diện tự động hoá (crrev.com/c/5231438, Lỗi: 1518356).
- FedCM: Triển khai tính năng hỗ trợ ChromeDriver để mở các đường liên kết trong hộp thoại FedCM, coi các đường liên kết đó là nút để đơn giản hoá quy trình tự động hoá (crrev.com/c/5225543, Lỗi: 1513520).
- Cảm biến: Sửa đổi các lệnh cảm biến ảo WebDriver để đọc góc Euler (alpha-beta-gamma) thay vì quaternion, tuân thủ các bản cập nhật gần đây về thông số kỹ thuật của cảm biến định hướng. Các lớp CDP và dịch vụ nội bộ vẫn sử dụng quaternion thông qua một bước chuyển đổi (crrev.com/c/5229177, Lỗi: 1506995, Lỗi: 1520912, Lỗi: 1520919).
Sửa lỗi
- Cổ điển: Khắc phục vấn đề trong đó việc trả về một nút từ một khung khác thông qua một tập lệnh dẫn đến lỗi
StaleElementReferencekhông chính xác; giờ đây, lỗi này sẽ trả vềJavaScriptErrormột cách chính xác để tuân thủ tiêu chuẩn WebDriver (crrev.com/c/5222746, Lỗi: 4668). - Kiểm thử: Đã khắc phục một kiểm thử sự kiện cuộn quá mức không thành công trên Chrome/ChromeDriver vì thao tác kéo bằng cảm ứng mở rộng ra ngoài ranh giới cửa sổ; thao tác kéo hiện được giới hạn đúng cách (crrev.com/c/5297676, Lỗi: 40832230).
- Kiểm thử: Đã sửa
open-close.https.htmlcác kiểm thử MIDI để không tạo ra các lời hứa không cần thiết, tránh các lời hứa bị từ chối không được xử lý khiến ChromeDriver không vượt qua được kiểm thử (crrev.com/c/5239869, Lỗi: 1499775). - Kiểm thử: Đã sửa bộ quyền trong các kiểm thử
wpt_internal/system-wake-lock/idlharness*khitest_driver.set_permission(...)truyền saifalsethay vìnullhoặcWindowProxy, gây nhầm lẫn cho ChromeDriver (crrev.com/c/5271087, Lỗi: 40287920).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Tăng mức độ phần phụ thuộc của BiDi Mapper, tìm nạp các bản sửa lỗi và tính năng mới nhất (crrev.com/c/5205452, crrev.com/c/5255321, crrev.com/c/5238148, crrev.com/c/5237125, Lỗi: 4226). (Lưu ý: Bản tăng số phiên bản đã được khôi phục trong thời gian ngắn rồi áp dụng lại do lỗi bản dựng crrev.com/c/5238855).
- Cải thiện tình trạng mã ChromeDriver bằng cách loại bỏ các truyền tĩnh không an toàn từ một lớp cơ sở sang một lớp dẫn xuất trong cả
ChromeImplvàDevToolsClientImpl, ngăn chặn hành vi có thể không xác định (crrev.com/c/5277062, crrev.com/c/5272562, Lỗi: 4702). - Loại bỏ các truyền không an toàn trong
WebViewImpl(crrev.com/c/5272230, Lỗi: 4702). - Xoá các dạng không dùng nữa của
base::Base64Encode(), di chuyển sang biến thể trả vềstd::stringmới hơn thay vì sử dụng các tham số ngoài (crrev.com/c/5179900, crrev.com/c/5246585, Lỗi: 1486214). - Cập nhật tất cả chỉ thị
#includechobase/...để sử dụng""thay vì<>nhằm đảm bảo tính nhất quán (crrev.com/c/5237376, Lỗi: 1500249). - Đã di chuyển tất cả các tệp
DIR_METADATAtrongchrome/test/sang Buganizer (crrev.com/c/5284119, Lỗi: 1518875). - Ngăn wptrunner tạo tệp
-cục bộ khi truyền-vvvbằng cách xoá công tắcchromedriver --log-path=-không cần thiết, vì stderr đã được chuyển hướng đến stdout (crrev.com/c/5282721). - Cải thiện wptrunner để tóm tắt kết quả kiểm thử khi xảy ra lỗi hồi quy, bao gồm cả kết quả kiểm thử phụ và dấu vết ngăn xếp ChromeDriver ngay trong đầu ra tóm tắt (crrev.com/c/5238662, Lỗi: 1521922).
- Đơn giản hoá quy trình gỡ lỗi các kiểm thử tích hợp ChromeDriver bằng cách giới thiệu tham số
--remote-chromedriver-portchorun_py_tests.py, cho phép kết nối với một phiên bản hiện có đang chạy trong trình gỡ lỗi (crrev.com/c/5237254, Lỗi: 4693). - Tránh các lệnh gọi
base::HexEncode()vàRandBytes()có hai đối số để trình biên dịch suy luận kích thước chính xác, đơn giản hoá mã (crrev.com/c/5241357).
ChromeDriver 122
Sửa lỗi
- BiDi: Cập nhật quy trình chuyển đổi tuần tự nút sâu để bao gồm
loaderId, cho phép ChromeDriver và BiDi Mapper tham chiếu và huỷ tham chiếu các nút đúng cách mà không cần quá nhiều chuyến khứ hồi (crrev.com/c/5116240, Lỗi: 1420968). - Các chức năng: Cập nhật ChromeDriver để truyền chức năng
acceptInsecureCertsđến BiDi Mapper ngay khi khởi động, ngăn chặn tình trạng xung đột khi chức năng có thể được áp dụng quá muộn (crrev.com/c/5125711, Lỗi: 4643). - Cổ điển: Tái cấu trúc quá trình tạo tham chiếu phần tử để sử dụng định dạng
<frame_id>.<loader_id>.<backend_node_id>; điều này cho phép ChromeDriver phân biệt rõ ràng giữa các tham chiếu phần tử hợp lệ, không xác định và lỗi thời trong quá trình điều hướng khung và cập nhật DOM (crrev.com/c/5094519, Lỗi: 4379). - Cổ điển: Khắc phục vấn đề khiến lệnh
window/handlescó thể không thành công và gặp lỗi "no such window" (không có cửa sổ như vậy) nếu một mục tiêu mới tạo tự đóng (ví dụ: trong tình huống tương tranh) trước khi ChromeDriver có thể đính kèm vào mục tiêu đó (crrev.com/c/5147409, Lỗi: 1506833). - FedCM: Đã thêm một trình nghe sự kiện nội bộ để thông báo khi hộp thoại FedCM bị đóng, ngăn lệnh
dialogtypetrả về dữ liệu cũ nếu hộp thoại bị đóng từ bên ngoài (ví dụ: thông quaAbortController.abort) (crrev.com/c/5067504, Lỗi: 1506292). - FedCM: Xoá tiền tố nhà cung cấp khỏi lệnh
ClickDialogButtonvì lệnh này hiện đã được phê duyệt trong quy cách FedCM (crrev.com/c/5092527, Lỗi: 1499341).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Nâng cấp phần phụ thuộc BiDi Mapper lên phiên bản mới nhất (crrev.com/c/5205452, Lỗi: 4226).
- Giảm lưu lượng truy cập ChromeDriver và Giao thức Chrome DevTools (CDP) bằng cách xoá các lệnh gọi
Page.enabledư thừa được gửi từ mọiDevToolsEventListener, vìDevToolsClientImplđã xử lý lệnh gọi này cho mỗi mục tiêu (crrev.com/c/5088789, Lỗi: 4600). - Đã thay đổi tất cả trình tạo Wptrunner cho
content_shellthành trạng thái thử nghiệm vì hiện tại, việc chạy thử nghiệm ở chế độ giao thức chưa được hỗ trợ đầy đủ trong khi quá trình tích hợp ChromeDriver đang diễn ra (crrev.com/c/5225148, Lỗi: 1474702). - Bỏ qua các kiểm thử yêu cầu
window.test_driver_internal.get_computed_roletrêncontent_shellvì chưa được triển khai, ngăn chặn lỗiTypeError(crrev.com/c/5189678, Lỗi: 1517744). - Đã triển khai lại quá trình tái cấu trúc để sử dụng các cờ
IS_OZONE_{X11, WAYLAND}độc lập với nền tảng thay vìOZONE_PLATFORM_*(crrev.com/c/5086329, Lỗi: 1500494). - Tăng mức độ phụ thuộc
selenium-atomslên bản sửa đổi mới nhất (crrev.com/c/5110808, Lỗi: 4662). - Đã sửa logic trong các kiểm thử SnapEvents khi chạy trên tệp nhị phân Chrome đầy đủ bằng cách làm tròn các thông tin đầu vào di chuyển con trỏ, thực thi tham số
origincho thao tác cuộn và sử dụng các câu nhận định xấp xỉ (assert_approx_equals) để xử lý các điểm khác biệt về thao tác cuộn/độ lệch phân số (crrev.com/c/5097343). - Thêm trình trợ giúp
StringPrintfNonConstexpr()để phân biệt vớiStringPrintf()khi chuỗi định dạng không phải là hằng số thời gian biên dịch (crrev.com/c/4950568, Lỗi: 1371963). - Đảm bảo rằng việc thoát macro
chromium::import!rust sử dụng một hàm đơn ánh để ngăn chặn xung đột trong tên mục tiêu GN đã tạo (crrev.com/c/5132119, Lỗi: 1512174). - Dọn dẹp quá trình triển khai
ScopedTempDirWithRetrybằng cách thêm một hàm khởi tạo và các giá trị trả về sớm trong hàm huỷ (crrev.com/c/5113843).
ChromeDriver 121
Tính năng mới
- Thử nghiệm: Đã thêm tính năng hỗ trợ chạy các thử nghiệm tích hợp ChromeDriver (
chromedriver_py_test) vớichrome-headless-shellngoài trình duyệt Chrome tiêu chuẩn trên các bot tạo bản dựng. Trong đó có khả năng khám phá tệp nhị phân của trình duyệt dựa trên tham số--browser-namevà chạy có điều kiện các bộ kiểm thử cụ thể (crrev.com/c/4995189, crrev.com/c/4989442, Lỗi: 4358).
Sửa lỗi
- Tính ổn định: Khởi chạy
KeyboardLayoutEnginemặc định dưới dạngStubKeyboardLayoutEngineđể ngăn ChromeDriver gặp sự cố do lượt truy cậpDCHECKtrongKeyboardLayoutEngineManager::SetKeyboardLayoutEngine(crrev.com/c/5017859, Lỗi: 4625). - Tính ổn định: Đã khắc phục vấn đề về tính không ổn định khi ChromeDriver có thể gặp sự cố nếu luồng phiên yêu cầu đóng một kết nối sau khi máy khách đã yêu cầu đóng cùng một kết nối (crrev.com/c/4994636, Lỗi: 4606).
- Quản lý tài nguyên: Khắc phục tình trạng rò rỉ tài nguyên trong các kiểm thử tích hợp ChromeDriver (
RemoteBrowserTest) bằng cách đảm bảo quy trình trình duyệt bị chấm dứt ngay cả khi một lệnh ChromeDriver đưa ra ngoại lệ (crrev.com/c/5009554, Lỗi: 4614). - Quản lý tài nguyên: Triển khai logic trong các bài kiểm thử tích hợp ChromeDriver để phát hiện và chấm dứt mọi quy trình trình duyệt bị quy trình ChromeDriver bỏ qua (crrev.com/c/5014093, Lỗi: 4617).
- Khởi động: Đã khắc phục một vấn đề khiến
chrome-headless-shelltrả về danh sách mục tiêu trống, ngăn chặn việc tạo phiên, bằng cách thêm đối sốdata:,vào dòng lệnh của trình duyệt khi tên trình duyệt làchrome-headless-shell(crrev.com/c/5010392, crrev.com/c/5009535, Lỗi: 4615, Lỗi: 4358). - FedCM: Đã thêm một sự kiện mới để thông báo khi hộp thoại FedCM bị đóng, đảm bảo rằng
dialogtypevà các lệnh khác không trả về dữ liệu cũ nếu hộp thoại bị đóng từ bên ngoài (ví dụ: thông quaAbortController.abort) (crrev.com/c/5067504, Lỗi: 1506292). - Thử nghiệm: Đã khắc phục và bật lại tất cả các kiểm thử tích hợp ChromeDriver từng bị vô hiệu hoá cho
chrome-headless-shelltrên Windows (crrev.com/c/5027594, Lỗi: 4358). - Thử nghiệm: Giảm bớt các câu khẳng định quá nghiêm ngặt trong
testElementRegionTestđể phù hợp với tiêu chuẩn WebDriver, giải quyết tình trạng không ổn định do các đặc điểm kết xuất của trình duyệt gây ra (crrev.com/c/5017865, Lỗi: 4526).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Cập nhật phần phụ thuộc BiDi Mapper (crrev.com/c/4994305, Lỗi: 4226).
- Huỷ bỏ việc sử dụng
IS_OZONE_{X11, WAYLAND}để chuyển sang dùngOZONE_PLATFORM_*do một lỗi (crrev.com/c/5086571, huỷ bỏ crrev.com/c/5083096, Lỗi: 1500494). - Đã di chuyển mã trong
commands_unittest.ccđể sử dụngbase::BindLambdaForTestingthay vìbase::Passedkhông dùng nữa (crrev.com/c/5078589, Lỗi: 1326449). - Tái cấu trúc
session.newđể trích xuất khả năng xử lý mã chuẩn (ví dụ:testName,binary,browserName) vào một phương thức chuyên dụng và đảm bảo lệnh này tuân thủ các chức năng tương tự như lệnh cổ điển (crrev.com/c/5004665, crrev.com/c/5001510, Lỗi: 4358, Lỗi: 4610). - Xoá việc sử dụng tiêu đề
base/strings/string_piece_forward.hkhông dùng nữa (crrev.com/c/5008994, Lỗi: 691162). - Chuẩn bị cho quá trình chuyển đổi
net::IOBufferthành một lớp không sở hữu bằng cách sử dụngnet::IOBufferWithSizecho các trường hợp sở hữu (crrev.com/c/4996470, Lỗi: 1493389). - Giới thiệu và sử dụng
base::RandBytesAsVector()để tránh lưu trữ các giá trị nhị phân trong chuỗi (crrev.com/c/5018451). - Tắt một số kiểm thử tích hợp Python liên tục không thành công trên máy Mac để ngăn chúng gây ra các bản dựng màu xanh lục do việc phân tích LUCI miễn trừ (crrev.com/c/4998771, Lỗi: 1486604, Lỗi: 1486520, Lỗi: 1486474, Lỗi: 1481915).
- Đổi tên
webdriver_tests_suite(vàwpt_tests_suite) thànhchrome_wpt_testsđể chuẩn hoá quy ước đặt tên cho bộ WPT trên các trình tạo thử nghiệm Linux (crrev.com/c/5014293, Lỗi: 1474702). - Sửa đổi lệnh
ConfirmIdpLoginFedCM webdriver thành lệnhClickDialogButtoncó khả năng mở rộng hơn và chấp nhận tham sốDialogButton(crrev.com/c/5003255, Lỗi: 1499341). - Đã cập nhật phần phụ thuộc
crossbenchvới nhiều bản sửa lỗi và tính năng, bao gồm cả tính năng phân tích cú pháp loại trình điều khiển, các phần giữ chỗ mạng và hỗ trợ iOS (crrev.com/c/5009937). - Đã thêm
#include <string>còn thiếu vàochrome_finder.hđể tuân thủ IWYU (crrev.com/c/4994605, Lỗi: 957519).
ChromeDriver 120
Tính năng mới
- BiDi: Đã thêm chế độ hỗ trợ cho các lệnh
session.newvàsession.end, cho phép người dùng tạo và kết thúc phiên trực tiếp thông qua các lệnh BiDi (crrev.com/c/4941941, Lỗi: 4496). - BiDi: Đã thêm tính năng hỗ trợ cho lệnh
session.statusPureBiDi, cho phép người dùng thiết lập một kết nối WebSocket không bị ràng buộc với bất kỳ phiên nào và truy xuất trạng thái phiên (crrev.com/c/4938596, Lỗi: 4496). (Được triển khai lại sau khi bị huỷ ở crrev.com/c/4922097) - BiDi: Tăng mức độ phụ thuộc của BiDi Mapper và điều chỉnh theo quy trình chạy Mapper mới, đơn giản (crrev.com/c/4952609, Lỗi: 4226).
- Cảm biến: Triển khai các lệnh cảm biến ảo trong
browser_protocol.pdlvà lớp CDP (Miền mô phỏng), thêm tính năng hỗ trợ cho phần Tự động hoá của Thông số kỹ thuật cảm biến chung (crrev.com/c/4770864, Lỗi: 1278377). - Cảm biến: Đã thêm các lệnh tiện ích ChromeDriver để quản lý cảm biến ảo, dịch các tham số WebDriver thành các lệnh gọi CDP mới (crrev.com/c/4770866, Lỗi: 1278377).
- Cảm biến: Đã thêm một đường dẫn mã
content_shellđể thao tác với cảm biến ảo thông quatestdriver.js, hoàn toàn bỏ qua ChromeDriver cho các kiểm thử trên web (crrev.com/c/4770865, Lỗi: 1278377). - Các biện pháp giảm thiểu hoạt động theo dõi: Đã thêm tính năng hỗ trợ ChromeDriver cho Các biện pháp giảm thiểu hoạt động theo dõi lượt truy cập (DIPS), cho phép tự động hoá quy cách
nav-tracking-mitigations(crrev.com/c/4873672, Lỗi: 1474656). (Lưu ý: Thay đổi này đã tạm thời được khôi phục do các lỗi kiểm thử trên máy Mac trong crrev.com/c/4938394)
Sửa lỗi
- Khởi động: Đã thêm tính năng khám phá Headless Shell vào ChromeDriver, cho phép ChromeDriver tìm kiếm tệp nhị phân
chrome-headless-shellnếu được yêu cầu thông qua các chức năng và không có đường dẫn rõ ràng nào được cung cấp (crrev.com/c/4987262, Lỗi: 4358). (Được chuyển lại sau khi bị huỷ trong crrev.com/c/4984449) - WebSockets: Triển khai một phần hỗ trợ cho WebSocket Closing Handshake, đảm bảo ChromeDriver phản hồi bằng khung
CLOSEkhi nhận được khung này từ đầu cuối từ xa (crrev.com/c/4931500, Lỗi: 4499). - Quyền: Đã hiển thị
options.disclaim_responsibilitydưới dạng cờ bản dựng để cho phép các bản dựng của nhà cung cấp (chẳng hạn như Microsoft Teams) tắt cờ này, ngăn các lời nhắc về quyền của macOS làm gián đoạn quy trình kiểm thử tự động (crrev.com/c/4929495, Lỗi: 1223643). - Tuân thủ tiêu chuẩn C++: Đã khắc phục hành vi không xác định (UB) do UBSan phát hiện khi truyền một số thực ngoài phạm vi thành số nguyên bằng cách thêm các chế độ kiểm tra phạm vi (crrev.com/c/4980055, Lỗi: 1394755).
- FedCM: Xoá chế độ hỗ trợ cú pháp tiêu đề cũ, đảm bảo tuân thủ cú pháp
login-status-httptiêu chuẩn (crrev.com/c/4957073, Lỗi: 1381501).
Các thay đổi và tái cấu trúc nội bộ
- Đã thêm kiểm thử tích hợp
testReturnFrameElementđể xác minh hành vi của ChromeDriver liên quan đến việc coiwindow.frameElementlà một tham chiếu cũ (crrev.com/c/4983549, Lỗi: 4477). - Cải thiện nhật ký bằng cách đảm bảo ChromeDriver ghi nhật ký các đường dẫn cụ thể mà ChromeDriver cố gắng xác định vị trí của tệp nhị phân trình duyệt (crrev.com/c/4976116, Lỗi: 4539).
- Đổi tên nhiều hàm
base::Timeđể mô tả rõ ràng hơn (ví dụ:FromDoubleT()thànhFromSecondsSinceUnixEpoch()) (crrev.com/c/4956111). - Cải tiến hàm khởi tạo
net::StringIOBuffervà các hoạt động thực thể hoáIOBufferđể tránh các bản sao chuỗi không cần thiết và các hoạt động phân bổ có độ dài bằng 0 (crrev.com/c/4938384, crrev.com/c/4959174). - Dọn dẹp việc xử lý chuỗi bằng cách thay thế
base::StrCatbằng+(nếu có thể) và sử dụngbase::AppendHexEncodedByte()(crrev.com/c/4963465, crrev.com/c/4977165). - Đổi tên
DIR_SOURCE_ROOTthànhDIR_SRC_TEST_DATA_ROOTtrong các thử nghiệm//chrome*để rõ ràng hơn (crrev.com/c/4916045, Lỗi: 1264897). - Tắt các thử nghiệm
PureBidiTestkhông ổn định trên các trình tạo Mac (crrev.com/c/4983555, Lỗi: 1496826).
ChromeDriver 119
Tính năng mới
- BiDi: Triển khai tính năng hỗ trợ giải quyết các tham chiếu yếu đến đối tượng cục bộ do đầu cuối từ xa trả về trong các lệnh gọi hàm từ xa (crrev.com/c/4886760, Lỗi: 4536).
- FedCM: Đã thêm lệnh
confirmidpsignincó tiền tố của nhà cung cấp để hỗ trợ bản dùng thử theo nguyên gốc của IDP Sign-In Status API (crrev.com/c/4811725, Lỗi: 1451884).
Sửa lỗi
- Mô phỏng thiết bị di động: Đã khắc phục một vấn đề trong đó các thiết bị được xác định trước không có Client Hints (ví dụ: các cấu hình cũ) bị hỏng do được điền sẵn các giá trị mặc định hợp lý (crrev.com/c/4887254, Lỗi: 4550).
- Cổ điển: Đã khắc phục lỗi chuyển đổi tuần tự của các đối tượng
MapvàSet; hiện các đối tượng này được chuyển đổi tuần tự chính xác thànhObjectthay vìCollectionvì thiếu thuộc tínhlength(crrev.com/c/4881378, Lỗi: 4031). - Cổ điển: Khôi phục logic để luôn tải xuống và sử dụng phiên bản ChromeDriver mới nhất tương thích trong quá trình kiểm thử, chỉ quay lại các phiên bản cụ thể khi xảy ra vấn đề về khả năng tương thích (crrev.com/c/4779613, hoàn nguyên crrev.com/c/4778973).
- FedCM: Chuẩn hoá các lệnh tự động hoá trình duyệt bằng cách đổi tên
SigninthànhLogin(confirmidplogin) để phù hợp với các cuộc thảo luận mới nhất về quy cách FedCM (crrev.com/c/4901302, Lỗi: 1451884). - Thử nghiệm: Đã khắc phục các thử nghiệm FedCM không thành công khi cookie của bên thứ ba bị vô hiệu hoá bằng cách bật rõ ràng API Trạng thái đăng nhập của IDP trong quá trình phiên chạy thử nghiệm (crrev.com/c/4889802, Lỗi: 1484833).
- Thử nghiệm: Thay thế phần giữ chỗ URL không hợp lệ
~NOTFOUNDbằng^NOTFOUNDtrong các trình chạy thử nghiệm để tuân thủ những thay đổi sắp tới về việc thực thi tiêu chuẩn URL của Chromium (crrev.com/c/4845589, Lỗi: 1416013).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Cập nhật phần phụ thuộc BiDi Mapper lên phiên bản 0.4.27, bổ sung các bản sửa lỗi và tính năng mới nhất (crrev.com/c/4862031, crrev.com/c/4890322).
- Thay thế nhiều con trỏ/API độ dài trong
//urlbằngstd::string_viewđể cải thiện độ an toàn và sự thuận tiện (crrev.com/c/4897456). - Đã chuyển đổi tiện ích
generateWebDriverValueđể sử dụng lựa chọn chuyển đổi tuần tự sâu (serializationOptions.serialization: deep) do giao thức BiDi cung cấp một cách tự nhiên (crrev.com/c/4889644). - Đã thêm các kiểm thử tích hợp để xác minh rằng việc tìm kiếm theo một tham chiếu phần tử cũ sẽ trả về chính xác lỗi "tham chiếu phần tử cũ" (crrev.com/c/4886793, Lỗi: 4440).
- Cải thiện định dạng kiểu mã trong
call_function.js(crrev.com/c/4882511, Lỗi: 4031). - Cải thiện ý kiến phản hồi của người dùng bằng cách thông báo rõ ràng cho người dùng khi họ kết nối qua WebSocket rằng các đường ống được hỗ trợ và nên dùng để có độ tin cậy và tính bảo mật cao hơn (crrev.com/c/4882626, Lỗi: 3480).
- Cập nhật cấu hình bộ WPT để lưu trữ
results.htmlcho các kiểm thửwebdriver_tests_suite, cung cấp giao diện người dùng tốt hơn để xem kết quả (crrev.com/c/4873223). - Đã khắc phục lỗi tích hợp Công cụ cho nhà phát triển với WebView bằng cách đánh dấu WebView WebContents và đặt loại Công cụ cho nhà phát triển của chúng thành
popup_pagethay vìother(crrev.com/c/4842093). - Đổi tên mục tiêu bản dựng WPT
chrome_wptthànhchrome_wpt_testsđể đảm bảo tính nhất quán và xoá mục tiêuwebdriver_wpt_testsdư thừa (crrev.com/c/4847474, Lỗi: 1474702). - Đã di chuyển
run_py_tests.pytừ thư việnoptparsekhông dùng nữa sangargparse(crrev.com/c/4849411, Lỗi: 4557).
ChromeDriver 118
Tính năng mới
- Kiểm thử tích hợp: Giới thiệu các kiểm thử tích hợp C++ cho ChromeDriver, cho phép kiểm thử các lớp cụ thể dựa trên lưu lượng truy cập CDP thực, lấp đầy khoảng trống giữa các kiểm thử đơn vị và kiểm thử tích hợp Python (crrev.com/c/4707855, Lỗi: 4528).
- Crossbench: Đã cập nhật phần phụ thuộc
crossbenchvới nhiều điểm cải tiến, bao gồm các câu chuyện mới về điểm chuẩn hiệu suất, khả năng hỗ trợ tốt hơn cho nền tảng và thiết bị, khả năng gỡ lỗi nâng cao và nhiều bản sửa lỗi (crrev.com/c/4803743).
Sửa lỗi
- Capabilities (Các chức năng): Khắc phục vấn đề thiếu
debuggerAddresstrong các chức năng được trả về trong cấu hình mặc định; hiện tại, chức năng này được trả về chính xác để hỗ trợ giao tiếp BiDi dựa trên CDP của Selenium (crrev.com/c/4789068, Lỗi: 4533). - Khả năng: Đảm bảo ChromeDriver trả về các giá trị
platformNametiêu chuẩn (ví dụ: "linux", "windows", "mac") theo yêu cầu của quy cách WebDriver (crrev.com/c/4797735, Lỗi: 4548).
Các thay đổi và tái cấu trúc nội bộ
- Đã di chuyển mã trong
MockSocketđể ưu tiênbase::span<>hơn con trỏ thô nhằm cải thiện độ an toàn (crrev.com/c/4832086). - Đã xoá các cách sử dụng không dùng nữa của
base::raw_ptrvàbase::raw_refđể thay bằng các dạng thức không đủ tiêu chuẩnraw_ptrvàraw_refthông qua quy trình dọn dẹp tự động (crrev.com/c/4773481). - Tạm thời quay lại một thay đổi luôn sử dụng ChromeDriver mới nhất, vì thay đổi này gây ra sự cố trên các kênh ổn định/beta của Windows (crrev.com/c/4778973, quay lại crrev.com/c/4777430).
- Điều chỉnh cấu hình WPT (Kiểm thử nền tảng web), bao gồm cả việc ngăn chặn các lỗi chỉ gỡ lỗi trong
pointer_touch.pyvà triển khai quy trình xác minh tiêu điểm phía trình duyệt cho các khung được phân vùng (crrev.com/c/4844810, crrev.com/c/4572517). - Đã thêm
#include <vector>còn thiếu vàoclient_hints.hđể tuân thủ IWYU (crrev.com/c/4767547). - Di chuyển các loại cơ sở dành riêng cho Apple (
ScopedTypeRef,ScopedCFTypeRef,scoped_nsautorelease_pool) vào không gian tênbase::apple::, để lại các tiêu đề chuyển tiếp tạm thời cho Crashpad (crrev.com/c/4799213, crrev.com/c/4790744, crrev.com/c/4790741, crrev.com/c/4784010).
ChromeDriver 117
Tính năng mới
- Giao tiếp qua ống dẫn: Thay đổi chế độ giao tiếp mặc định giữa ChromeDriver và Chrome từ WebSockets sang ống dẫn (
--remote-debugging-in-pipevà--remote-debugging-out-pipe) trên tất cả các nền tảng được hỗ trợ, bao gồm cả Windows (crrev.com/c/4634299, crrev.com/c/4628834, crrev.com/c/4635378, Lỗi: 3480). - BiDi: Cập nhật phần phụ thuộc BiDi Mapper (crrev.com/c/4670516, Lỗi: 4226).
Sửa lỗi
- Tính ổn định: Khắc phục lỗi truy cập con trỏ rỗng khiến ChromeDriver gặp sự cố, dẫn đến lỗi
ConnectionRefusedtrong quá trình chạy thử (crrev.com/c/4675633, Lỗi: 1457101). - Điều hướng: Khắc phục vấn đề khi các lỗi
NoSuchExecutionContextvàNoSuchWindowcủa Chrome trong quá trình điều hướng không được xử lý đồng nhất; cả hai lỗi này hiện được ánh xạ đúng cách để thử lại thao tác (crrev.com/c/4667156, Lỗi: 4459). - Mô phỏng thiết bị di động: Đã sửa logic suy luận cho
clientHints.mobile; hiện tại,clientHints.mobileđược suy luận chính xác từuserAgenttrên Android và mặc định là false trên các nền tảng khác, khắc phục vấn đề trong đó máy tính bảng được báo cáo không chính xác là thiết bị di động (crrev.com/c/4649348, Lỗi: 4243). - Tạo phiên: Cập nhật quy trình tạo phiên để trả về chính xác mã lỗi
SessionNotCreatedtiêu chuẩn khi thất bại, tuân thủ nghiêm ngặt quy cách W3C WebDriver (crrev.com/c/4638223, Lỗi: 4379). Lưu ý: Sau đó, thay đổi này đã được hoàn nguyên vì một số đường dẫn mã cụ thể yêu cầu mã lỗi khác (crrev.com/c/4651188).
Các thay đổi và tái cấu trúc nội bộ
- Loại bỏ các tập lệnh quy trình phát hành ChromeDriver theo cách thủ công, vì ChromeDriver hiện đã được tích hợp hoàn toàn vào quy trình phát hành Chrome và có sẵn thông qua cơ sở hạ tầng Chrome for Testing (crrev.com/c/4520687, Lỗi: 4142).
- Đã di chuyển cơ sở hạ tầng WPT (Kiểm thử nền tảng web) để sử dụng bộ công cụ
wptrunnerchính thức thay vìrun_webdriver_tests.pytuỳ chỉnh, giúp cải thiện đáng kể tốc độ và độ tin cậy khi thực thi, đồng thời đảm bảo ChromeDriver khởi động lại giữa các kiểm thử để cô lập các sự cố (crrev.com/c/4723147, crrev.com/c/4676070, crrev.com/c/4639168). - Cải tiến rộng rãi
ChromeLaunchervà các lớp liên quan để hỗ trợ quá trình chuyển đổi sang các đường ống, giảm sự kết hợp vớiDevToolsHttpClientvà di chuyển logic WebSocket vào các nhánh chuyên dụng (crrev.com/c/4632801, crrev.com/c/4674345). - Đổi tên trường
BrowserInfo.is_headlessgây hiểu lầm thànhBrowserInfo.is_headless_shellđể cho rõ ràng (crrev.com/c/4650452, Lỗi: 4358). - Thay thế nhiều phương thức
base::Valuekhông dùng nữa bằng các phương thứcbase::Value::Dicttương đương hiện đại (ví dụ:FindDouble(),Set(),size()) trên toàn bộ cơ sở mã (crrev.com/c/4258936, crrev.com/c/4336805, crrev.com/c/4461067).112.0.5603.0, 113.0.5653.0, 114.0.5733.0 - Xoá việc sử dụng
[w]ctype.hđể chuyển sang các tiện ích chuỗi cơ sở an toàn hơn và triển khai các cơ sở mới chobase::expected(crrev.com/c/4749459, crrev.com/c/4755226). - Triển khai các lệnh tự động hoá
get_fedcm_dialog_titlevàselect_fedcm_accounttrongTestDrivercho WPT FedCM (crrev.com/c/4618303). - Cập nhật tập lệnh bản dựng trình liên kết BiDi để hoạt động chính xác bất kể thư mục đang hoạt động hiện tại (crrev.com/c/4670550).
- Chuyển đổi các tệp
/chrome/test/chromedriverđể sử dụng ARC (Tự động đếm số lượt tham chiếu) trong các bản dựng macOS, thêm mã dự phòng cần thiết (crrev.com/c/4663602). - Đã cố gắng tắt giao tiếp qua ống theo mặc định thông qua một cam kết tự động đóng dấu, nhưng thay đổi này chỉ ảnh hưởng đến cấu hình mà không làm thay đổi hành vi cốt lõi của các ống theo mặc định được giới thiệu trước đó (crrev.com/c/4683947).
ChromeDriver 116
Tính năng mới
- FedCM: Thêm một khả năng mới cho phép các ứng dụng kiểm tra xem ChromeDriver có hỗ trợ các lệnh FedCM hay không mà không cần thực thi các lệnh đó và phát hiện lỗi (crrev.com/c/4624924, Lỗi: 1356159).
- Thử nghiệm: Đã bật tính năng sử dụng lại cửa sổ thử nghiệm cho các thử nghiệm testharness chạy qua ChromeDriver trong
wptrunnerđể đánh giá tác động của tính năng này đến hiệu suất và độ không ổn định (crrev.com/c/4515180, Lỗi: 1394572).
Sửa lỗi
- Tuân thủ tiêu chuẩn C++: Đã khắc phục hành vi không xác định do sử dụng không chính xác các chế độ liệt kê có phạm vi (lớp enum) trực tiếp trong chuỗi định dạng, giải quyết các cảnh báo mới của trình biên dịch Clang (crrev.com/c/4628112, Lỗi: 1456289).
- FedCM: Khắc phục một nguyên nhân có thể gây ra tình trạng kiểm thử không ổn định bằng cách sửa một trường hợp biên ngăn
setdelayenabledhoạt động đúng cách (crrev.com/c/4606064, Lỗi: 1453412).
Thay đổi và tái cấu trúc nội bộ
- BiDi: Tăng mức độ phần phụ thuộc của BiDi Mapper và cập nhật tập lệnh bản dựng để kéo bản sửa đổi mới nhất từ "main" theo mặc định (crrev.com/c/4615087, crrev.com/c/4615791, Lỗi: 4226).
- Đã chuyển ChromeDriver để mở và ghi tất cả các tệp bằng phương thức mã hoá UTF-8 một cách rõ ràng (crrev.com/c/4614522).
- Cải tiến
ChromeImplđể loại bỏ phần phụ thuộc của nó vàoDevToolsHttpClientvà giảm mức sử dụngSyncWebSocketFactoryvàBrowserInfođể chuẩn bị giao tiếp qua các đường ống thay vì WebSockets (crrev.com/c/4571690, crrev.com/c/4571199, Lỗi: 3480). - Đã xoá "chế độ mặc định" không dùng nữa cho khung được phân vùng và cập nhật các thử nghiệm liên quan để bật cờ tính năng mới, tiếp tục di chuyển sang phiên đấu giá FLEDGE (crrev.com/c/4558645).
- Cải thiện các thử nghiệm FedCM bằng cách thay thế các câu khẳng định
WaitForConditionchung bằngassertTrueđể cho biết rõ thời điểm xảy ra thời gian chờ (crrev.com/c/4590211). - Đánh dấu các cảnh báo
raw_ptrlơ lửng không ổn định đã biết trong các bài kiểm thử đơn vịlinux-rel(crrev.com/c/4598070). - Đã cập nhật tệp OWNERS cho trình liên kết BiDi (crrev.com/c/4614518).
ChromeDriver 115
Tính năng mới
- Mô phỏng thiết bị di động: Đã triển khai tính năng hỗ trợ User-Agent Client Hints trong quá trình mô phỏng thiết bị di động, cho phép ChromeDriver phân tích cú pháp client hints từ các chức năng và chế độ đặt sẵn, đồng thời truyền các gợi ý đó đến Chrome (crrev.com/c/4498667, crrev.com/c/4466129, Lỗi: 4243).
- Mô phỏng thiết bị di động: Cập nhật các chế độ mô phỏng thiết bị di động đặt sẵn để sử dụng phiên bản lớn của trình duyệt lưu trữ thay vì phiên bản ChromeDriver khi thay thế chuỗi định dạng
%strong tác nhân người dùng (crrev.com/c/4502850, Lỗi: 4243). - Thiết lập: Đã thêm tính năng hỗ trợ tải một phiên bản ChromeDriver cụ thể xuống cho một kênh nhất định, cải thiện các trường hợp tự động hoá trong đó ChromeDriver chạy trên một nền tảng khác (chẳng hạn như Android/WebView) so với máy chủ lưu trữ (crrev.com/c/4550281).116.0.5791.0
Sửa lỗi
- Cổ điển: Khắc phục vấn đề khi không phân giải được một nút sẽ trả về
UnknownErrorkhông chính xác thay vì lỗiNoSuchElementtiêu chuẩn (crrev.com/c/4508952, Lỗi: 4440). - Mô phỏng thiết bị di động: Thêm các câu khẳng định nghiêm ngặt hơn vào các chế độ cài đặt sẵn để mô phỏng thiết bị di động nhằm thực thi rằng cờ
clientHints.mobilephải là true nếu chuỗiuserAgentchứa "Mobile" (Thiết bị di động) (crrev.com/c/4507142, Lỗi: 4243). - Mô phỏng thiết bị di động: Đã di chuyển các chế độ ghi đè
DeviceMetricsđể sử dụng lệnh CDPEmulation.setDeviceMetricsOverridethay vì lệnh tương đương với miềnPagekhông được dùng nữa (crrev.com/c/4502614, Lỗi: 4243).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Cập nhật phần phụ thuộc BiDi Mapper, cho phép các tính năng chuyển đổi tuần tự sâu (crrev.com/c/4535936, crrev.com/c/4512195).
- Xoá phương thức
Connectkhông dùng nữa khỏiDevToolsClientđể chuẩn bị di chuyển ChromeDriver nhằm giao tiếp qua các ống dẫn (crrev.com/c/4521485, Lỗi: 3480). - Di chuyển cơ sở mã để ưu tiên
base::Value::Dicthơnbase::Valuevà thay thế các phương thức không dùng nữa nhưFindStringKey(),SetKey()vàSetByDottedPath()(crrev.com/c/4529788, crrev.com/c/4522701, crrev.com/c/4515800, crrev.com/c/4507150). - Chuyển sang sử dụng các hàm
string_util.hthay cho[w]ctype.hđể chuyển đổi loại an toàn hơn (crrev.com/c/4529187). - Thay đổi logic tải tệp hạt giống để sử dụng đường dẫn tuyệt đối nhằm đảm bảo tính nhất quán khi tập lệnh và Chrome chạy ở các vị trí khác nhau (crrev.com/c/4504656).
- Xoá phương thức
CallAsyncFunction()không dùng đến khỏiweb_view.h(crrev.com/c/4518363, Lỗi: 3376). - Áp dụng thao tác đổi tên tự động
base::raw_ptrthànhraw_ptrđể tuân theo các lựa chọn ưu tiên trong hướng dẫn về kiểu (crrev.com/c/4476651).
ChromeDriver 114
Tính năng mới
- Cổ điển: Đã truyền thông tin
MobileDeviceđếnMobileEmulationOverrideManagerđể đặt nền tảng cho Client Hints và chế độ ghi đè UserAgent trong tương lai (crrev.com/c/4447524). - Thử nghiệm: Đã thêm các thiết bị thử nghiệm cho ChromeDriver (crrev.com/c/4459939).
Sửa lỗi
- Không có giao diện người dùng: Đã khắc phục sự cố trong chế độ không có giao diện người dùng mới bằng cách âm thầm bỏ qua các yêu cầu xem trước bản in theo tập lệnh (ví dụ:
window.print()), điều chỉnh hành vi cho phù hợp với chế độ không có giao diện người dùng cũ (crrev.com/c/4436313, Lỗi: 4385). - Các khả năng: Đã khắc phục lỗi sử dụng sau khi di chuyển trong các khả năng của ChromeDriver (crrev.com/c/4462094, Lỗi: 4243).
- DevTools: Xoá một
DCHECKtrongDevToolsClientImpl::SendCommandInternalđể ngăn xảy ra sự cố khi kết nối DevTools bị gián đoạn, vì đây không phải là lỗi bất biến (crrev.com/c/4370486, Lỗi: 4385).
Các thay đổi và tái cấu trúc nội bộ
- BiDi: Đã cập nhật phần phụ thuộc BiDi Mapper (crrev.com/c/4418727).
- Đã giải quyết nhiều cảnh báo về con trỏ treo trong quá trình thực thi kiểm thử đơn vị bằng cách quản lý đúng cách các tham chiếu không thuộc sở hữu và việc huỷ cục bộ trong
WebViewImplvà các kiểm thử trình ghi nhật ký hiệu suất (crrev.com/c/4374824, crrev.com/c/4368179). - Đã di chuyển cơ sở mã để sử dụng API
base::Valuephiên bản 2 mới, thay thế các phương thức không dùng nữa nhưValue::SetPath(),Value::SetStringPath()vàbase::ListValue(crrev.com/c/4452309, crrev.com/c/4431420, crrev.com/c/4422897, crrev.com/c/4377520). - Thay thế tất cả các lần sử dụng
base::GUIDbằngbase::Uuidđể phù hợp với việc đổi tên thư viện cơ sở cốt lõi (crrev.com/c/4455083). - Thực hiện các hoạt động dọn dẹp mã khác nhau, bao gồm cả việc rút ngắn mã, sử dụng các thao tác đơn nguyên cho
expected, xoá mã không dùng và khắc phục các lỗi vi phạm kiểu (crrev.com/c/4475368, crrev.com/c/4464199). - Cập nhật các kiểm thử liên quan đến khung được phân vùng để sử dụng thuộc tính
configthay vì thuộc tínhsrckhông dùng nữa (crrev.com/c/4382231). - Xoá việc sử dụng
ShadowDOMV0không hiệu quả (crrev.com/c/4388302). - Đã hoàn nguyên việc bổ sung một cờ cho bản sửa lỗi PDF của Skia (
SK_IGNORE_PDF_EOF_NEWLINE_FIX) để cho phép đặt lại đường cơ sở (crrev.com/c/4401451). - Cập nhật chủ sở hữu cho kịch bản kiểm tra ChromeDriver và điều chỉnh để tạo JSON cấu hình dành riêng cho Pinpoint (crrev.com/c/4437492, crrev.com/c/4298554).
- Đã thêm một phần thiếu (
<cstring>) chostd::strlentrongweb_view_impl.ccđể khắc phục vấn đề về bản dựng IWYU (crrev.com/c/4376772). - Xoá một tệp kiểm thử không dùng (
orientation_test.html) (crrev.com/c/4335668).
ChromeDriver 113.0.5672.63
Hỗ trợ Chrome phiên bản 113
- Đã giải quyết vấn đề 4205: Mã đối tượng giống nhau trong Classic và BiDi [Pri-1]
- Đã giải quyết vấn đề 4302: Không giả định rằng Mapper nằm trong thẻ đầu tiên trong ExecuteGetWindowHandles [Pri-1]
- Đã giải quyết vấn đề 4356: Chrome 110 không sử dụng giá trị ưu tiên "download.default_directory" [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 113.0.5672.24
Hỗ trợ Chrome phiên bản 113
- Đã giải quyết vấn đề 4205: Mã đối tượng giống nhau trong Classic và BiDi [Pri-1]
- Đã giải quyết vấn đề 4302: Không giả định rằng Mapper nằm trong thẻ đầu tiên trong ExecuteGetWindowHandles [Pri-1]
- Đã giải quyết vấn đề 4356: Chrome 110 không sử dụng giá trị ưu tiên "download.default_directory" [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 112.0.5615.49
Hỗ trợ Chrome phiên bản 112
- Đã giải quyết vấn đề 3517: Bật tính năng in cho thiết bị không có màn hình [Pri-]
- Đã giải quyết vấn đề 4419: Tải quá nhiều trên Speedometer khi sử dụng chromedriver [Pri-3]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 112.0.5615.28
Hỗ trợ Chrome phiên bản 112
- Đã giải quyết vấn đề 4357: Vấn đề về phiên bản Chromedriver 110.0.5481.77 với các lựa chọn --headless và --user-data-dir. [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 111.0.5563.64
Hỗ trợ Chrome phiên bản 111
- Đã giải quyết vấn đề 4216: Chạy ChromeDriver với BiDiMapper tuỳ chỉnh [Pri-]
- Đã giải quyết vấn đề 4300: Xử lý cửa sổ có thể tương tác giữa phiên bản cũ và BiDi [Pri-]
- Đã giải quyết vấn đề 4325: Việc xử lý toJSON trong jsonSerialize của call_function.js khác với tiêu chuẩn. [Pri-]
- Đã giải quyết vấn đề 4330: DCHECK không thành công tại DevToolsClientImpl::AddListener [Pri-]
- Đã giải quyết vấn đề 4357: Vấn đề về phiên ChromeDriver với các lựa chọn --headless và --user-data-dir [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 111.0.5563.41
Hỗ trợ Chrome phiên bản 111
- Đã giải quyết vấn đề 4357: Vấn đề về phiên ChromeDriver với các lựa chọn --headless và --user-data-dir [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 111.0.5563.19
Hỗ trợ Chrome phiên bản 111
- Đã giải quyết vấn đề 4216: Chạy ChromeDriver với BiDiMapper tuỳ chỉnh [Pri-]
- Đã giải quyết vấn đề 4300: Xử lý cửa sổ có thể tương tác giữa phiên bản cũ và BiDi [Pri-]
- Đã giải quyết vấn đề 4325: Việc xử lý toJSON trong jsonSerialize của call_function.js khác với tiêu chuẩn. [Pri-]
- Đã giải quyết vấn đề 4330: DCHECK không thành công tại DevToolsClientImpl::AddListener [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 110.0.5481.77
Hỗ trợ Chrome phiên bản 110
- Đã giải quyết vấn đề 4193: Không thể bắt đầu phiên mới trên Android 13 [Pri-]
- Đã giải quyết vấn đề 4272: WebSocket phải coi code=0 là dấu hiệu của FIN [Pri-]
- Đã giải quyết vấn đề 4276: Khắc phục sự cố kết nối trong ChromeDriver [Pri-]
- Đã giải quyết vấn đề 4295: ChromeDriver có
"webSocketUrl": truelà racy [Pri-] - Đã giải quyết vấn đề 4297: ChromeDriver Bidi serializes incorrectly [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 110.0.5481.30
Hỗ trợ Chrome phiên bản 110
- Đã giải quyết vấn đề 4193: Không thể bắt đầu phiên mới trên Android 13 [Pri-]
- Đã giải quyết vấn đề 4272: WebSocket phải coi code=0 là dấu hiệu của FIN [Pri-]
- Đã giải quyết vấn đề 4276: Khắc phục sự cố kết nối trong ChromeDriver [Pri-]
- Đã giải quyết vấn đề 4295: ChromeDriver có
"webSocketUrl": truelà racy [Pri-] - Đã giải quyết vấn đề 4297: ChromeDriver Bidi serializes incorrectly [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 109.0.5414.74
Hỗ trợ Chrome phiên bản 109
- Đã giải quyết vấn đề 4179: Phiên BiDi phải hỗ trợ nhiều kết nối [Pri-]
- Vấn đề 4203 đã được giải quyết: Cải thiện thông tin về nguồn tín dụng [Pri-]
- Đã giải quyết vấn đề 4263: Sự cố khi nhấn Meta+A [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 109.0.5414.25
Hỗ trợ Chrome phiên bản 109
- Đã giải quyết vấn đề 4179: Phiên BiDi phải hỗ trợ nhiều kết nối [Pri-]
- Vấn đề 4203 đã được giải quyết: Cải thiện thông tin về nguồn tín dụng [Pri-]
- Đã giải quyết vấn đề 4263: Sự cố khi nhấn Meta+A [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 108.0.5359.71
Hỗ trợ Chrome phiên bản 108 Để biết thêm thông tin, hãy xem ghi chú phát hành.
ChromeDriver 108.0.5359.22
Hỗ trợ Chrome phiên bản 108
- Đã giải quyết vấn đề 4204: Khắc phục lỗi kiểm thử WPT test_top_level_and_one_child [Pri-]
- Đã giải quyết vấn đề 4215: Đổi tên bản dựng chromedriver_mac64_m1 thành chromedriver_mac_arm64 [Pri-]
- Đã giải quyết vấn đề 4221: Sự cố khi lệnh nhấp đóng trình duyệt [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 107.0.5304.62
Hỗ trợ Chrome phiên bản 107
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 107.0.5304.18
Hỗ trợ Chrome phiên bản 107
- Đã giải quyết vấn đề 4180: Cấm mọi lệnh BiDi xử lý cho đến khi được thông báo rằng BiDiMapper đã bắt đầu [Pri-]
- Đã giải quyết vấn đề 4198: ChromeDriver BiDi không được giả định rằng BiDiMapper luôn ở thẻ đầu tiên [Pri-]
- Đã giải quyết vấn đề 4207: Lỗi WebDriver khi chạy WPT [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 106.0.5249.61
Hỗ trợ Chrome phiên bản 106
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 106.0.5249.21
Hỗ trợ Chrome phiên bản 106
- Đã giải quyết vấn đề 4016: Thêm chế độ hỗ trợ cơ bản cho BiDi vào ChromeDriver (dựa trên Trình liên kết) [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 105.0.5195.52
Hỗ trợ Chrome phiên bản 105
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 105.0.5195.19
Hỗ trợ phiên bản Chrome
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 104.0.5112.79
Hỗ trợ Chrome phiên bản 104
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 104.0.5112.29
Hỗ trợ Chrome phiên bản 104
- Đã giải quyết vấn đề 4121: Lệnh WebDriver đôi khi không thành công với thông báo "unexpected command response" (phản hồi lệnh không mong muốn) [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 104.0.5112.20
Hỗ trợ Chrome phiên bản 104
- Đã giải quyết vấn đề 4121: Lệnh WebDriver đôi khi không thành công với thông báo "unexpected command response" (phản hồi lệnh không mong muốn) [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 103.0.5060.134
Hỗ trợ Chrome phiên bản 103
- Đã giải quyết vấn đề 4048: khung mục tiêu bị tách rời [Pri-]
- Đã giải quyết vấn đề 4121: Lệnh WebDriver đôi khi không thành công với thông báo "unexpected command response" (phản hồi lệnh không mong muốn) [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 103.0.5060.53
Hỗ trợ Chrome phiên bản 103
- Đã giải quyết vấn đề 4048: khung mục tiêu bị tách rời [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 103.0.5060.24
Hỗ trợ Chrome phiên bản 103
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 102.0.5005.61
Hỗ trợ Chrome phiên bản 102
- Đã giải quyết vấn đề 1309282: chromedriver không hỗ trợ các công tắc có nhiều giá trị [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 102.0.5005.27
Hỗ trợ Chrome phiên bản 102
- Đã giải quyết vấn đề 1309282: chromedriver không hỗ trợ các công tắc có nhiều giá trị [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 101.0.4951.41
Hỗ trợ Chrome phiên bản 101
- Đã giải quyết vấn đề 4046: Lỗi DCHECK khi nối khung bảo vệ trống [Pri-]
- Đã giải quyết vấn đề 4080: Không chuyển được sang khung lồng nhau [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 101.0.4951.15
Hỗ trợ Chrome phiên bản 101
- Đã giải quyết vấn đề 4046: Lỗi DCHECK khi nối khung bảo vệ trống [Pri-]
- Đã giải quyết vấn đề 4080: Không chuyển được sang khung lồng nhau [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 100.0.4896.60
Hỗ trợ Chrome phiên bản 100
- Đã giải quyết vấn đề 4002: Hỗ trợ Khung được phân vùng [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 100.0.4896.20
Hỗ trợ Chrome phiên bản 100
- Đã giải quyết vấn đề 4002: Hỗ trợ Khung được phân vùng [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 99.0.4844.51
Hỗ trợ Chrome phiên bản 99
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 99.0.4844.35
Hỗ trợ Chrome phiên bản 99
- ĐÃ TRẢ LẠI!!! Đã giải quyết vấn đề 2269: Không thể sử dụng các ký tự không phải BMP (điểm mã trên U+FFFF) [Pri-3]
- Vấn đề đã được giải quyết chromium:1295243: Hồi quy trong ChromeDriver sendKeys [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 99.0.4844.17
Hỗ trợ Chrome phiên bản 99
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 98.0.4758.102
Hỗ trợ Chrome phiên bản 98
- Đã giải quyết vấn đề 3933: Lượt nhấp ở cạnh khung hiển thị không có hiệu quả mà không có lỗi [Pri-]
- ĐÃ TRẢ LẠI!!! Đã giải quyết vấn đề 2269: Không thể sử dụng các ký tự không phải BMP (điểm mã trên U+FFFF) [Pri-3]
- Vấn đề đã được giải quyết chromium:1295243: Hồi quy trong ChromeDriver sendKeys [Pri-1]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 98.0.4758.80
Hỗ trợ Chrome phiên bản 98
- Đã giải quyết vấn đề 3933: Lượt nhấp ở cạnh khung hiển thị không có hiệu quả mà không có lỗi [Pri-]
- Đã giải quyết vấn đề 2269: Không thể sử dụng các ký tự không phải BMP (điểm mã trên U+FFFF) [Pri-3]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 98.0.4758.48
Hỗ trợ Chrome phiên bản 98
- Đã giải quyết vấn đề 3933: Lượt nhấp ở cạnh khung hiển thị không có hiệu quả mà không có lỗi [Pri-]
- Đã giải quyết vấn đề 2269: Không thể sử dụng các ký tự không phải BMP (điểm mã trên U+FFFF) [Pri-3]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 97.0.4692.71
Hỗ trợ Chrome phiên bản 97
- Đã giải quyết vấn đề 3878: Xử lý tốt hơn các toạ độ phần tử phân số cho lượt nhấp vào phần tử [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 97.0.4692.36
Hỗ trợ Chrome phiên bản 97
- Đã giải quyết vấn đề 3878: Xử lý tốt hơn các toạ độ phần tử phân số cho lượt nhấp vào phần tử [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 97.0.4692.20
Hỗ trợ Chrome phiên bản 97
- Đã giải quyết vấn đề 3878: Xử lý tốt hơn các toạ độ phần tử phân số cho lượt nhấp vào phần tử [Pri-]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 96.0.4664.45
Hỗ trợ Chrome phiên bản 96
- Đã giải quyết vấn đề 3445: Không thể truy cập vào các phần tử trong iframe bên trong một gốc bóng [Pri-3]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 96.0.4664.35
Hỗ trợ Chrome phiên bản 96
- Đã giải quyết vấn đề 3445: Không thể truy cập vào các phần tử trong iframe bên trong một gốc bóng [Pri-3]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 96.0.4664.18
Hỗ trợ Chrome phiên bản 96
- Đã giải quyết vấn đề 3445: Không thể truy cập vào các phần tử trong iframe bên trong một gốc bóng [Pri-3]
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 95.0.4638.69
Hỗ trợ Chrome phiên bản 95
- Đã giải quyết vấn đề 3857: Tiêu đề máy chủ lưu trữ hoặc tiêu đề nguồn gốc được chỉ định và không nằm trong danh sách cho phép hoặc máy chủ cục bộ [Pri-1]
- Đã thêm đối số
--allowed-origins
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 95.0.4638.54
Hỗ trợ Chrome phiên bản 95
- Đã giải quyết vấn đề 3857: Tiêu đề máy chủ lưu trữ hoặc tiêu đề nguồn gốc được chỉ định và không nằm trong danh sách cho phép hoặc máy chủ cục bộ [Pri-1]
- Đã thêm đối số
--allowed-origins
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 95.0.4638.17
Hỗ trợ Chrome phiên bản 95
- Đã giải quyết vấn đề 3857: Tiêu đề máy chủ lưu trữ hoặc tiêu đề nguồn gốc được chỉ định và không nằm trong danh sách cho phép hoặc máy chủ cục bộ [Pri-1]
- Đã thêm đối số
--allowed-origins
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 95.0.4638.10
Hỗ trợ Chrome phiên bản 95
- Đã giải quyết vấn đề 3857: Tiêu đề máy chủ lưu trữ hoặc tiêu đề nguồn gốc được chỉ định và không nằm trong danh sách cho phép hoặc máy chủ cục bộ [Pri-1]
- Đã thêm đối số
--allowed-origins
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 94.0.4606.113
Hỗ trợ Chrome phiên bản 94
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 94.0.4606.61
Hỗ trợ Chrome phiên bản 94
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 94.0.4606.41
Hỗ trợ Chrome phiên bản 94
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 93.0.4577.63
Hỗ trợ Chrome phiên bản 93
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 93.0.4577.15
Hỗ trợ Chrome phiên bản 93
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 92.0.4515.107
Hỗ trợ Chrome phiên bản 92
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 92.0.4515.43
Hỗ trợ Chrome phiên bản 92
- Đã giải quyết vấn đề 3389: Xác thực máy chủ cho các yêu cầu ChromeDriver
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 91.0.4472.101
Hỗ trợ Chrome phiên bản 91
- Đã giải quyết vấn đề 1205107: Không thể lấy giá trị thuộc tính cho các trường trên ứng dụng web.
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 91.0.4472.19
Hỗ trợ Chrome phiên bản 91
- Đã giải quyết vấn đề 3744: SendKeys() và Click() âm thầm thất bại sau khi điều hướng liên kết
- Đã giải quyết vấn đề 3746: điểm cuối thuộc tính cập nhật sai giá trị
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 90.0.4430.24
Hỗ trợ Chrome phiên bản 90
- Đã giải quyết vấn đề 3708: GetElementLocation's inView không hoạt động đối với các phần tử trong DOM tối
- Đã giải quyết vấn đề 3721: Thu thập nhật ký hiệu suất cho trình chạy dịch vụ khi được bật
- Đã giải quyết vấn đề 3731: AdbImpl::GetPidByName không hoạt động đúng cách trên các hệ điều hành Android không chuẩn, chẳng hạn như trên OnePlus
- Đã giải quyết vấn đề 3733: Lỗi nghiêm trọng với miền trên localhost
- Đã giải quyết vấn đề 3734: Trình điều khiển sẽ gặp lỗi khi cố gắng đặt cookie trên miền không chính xác
- Đã giải quyết vấn đề 3743: Cải tiến hàm gọi và khắc phục vấn đề xoá phần tử
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 89.0.4389.23
Hỗ trợ Chrome phiên bản 89
- Đã giải quyết vấn đề 3667: Hết thời gian chờ nhận thông báo từ trình kết xuất
- Vấn đề đã giải quyết 3675: GetElementLocation sử dụng phương thức inView xử lý sai giá trị boolean dưới dạng mảng
- Đã giải quyết vấn đề 3682: GetElementRegion trả về kích thước không chính xác cho các phần tử nằm một phần ngoài khung nhìn
- Đã giải quyết vấn đề 3690: ChromeDriver gặp lỗi nếu các tiện ích sử dụng API chrome.windows
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 88.0.4324.96
Hỗ trợ Chrome phiên bản 88
- Đã giải quyết vấn đề 3641: Trang không được tải/kết xuất khi cửa sổ trình duyệt không được lấy tiêu điểm bằng Chrome Beta phiên bản 87 và chromedriver phiên bản(87/86)
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 88.0.4324.27
Hỗ trợ Chrome phiên bản 88
- Đã giải quyết vấn đề 3611: Đầu ra
getText()trong protractor khác với<element>.innerText - Vấn đề đã giải quyết 3625: Cải thiện khả năng tương thích của ảnh chụp màn hình về phần tử
- Đã giải quyết vấn đề 3628: Tham chiếu phần tử cũ và URL sai được báo cáo lại với URL có một URL khác trong đường dẫn của nó
- Đã giải quyết vấn đề 3631: Thêm tính năng hỗ trợ cho khả năng
webauthn:extension:largeBlob - Đã giải quyết vấn đề 3635: Chromedriver 86 –
chromedriver.quit()có vẻ như không truyền sự kiện huỷ tải đúng cách - Đã giải quyết vấn đề 3649: Không sao chép được văn bản đã chọn vào bảng nhớ tạm trên Windows 10 khi sử dụng chế độ không có giao diện người dùng
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 87.0.4280.88
Hỗ trợ Chrome phiên bản 87
- Đã giải quyết vấn đề 3641: Trang không được tải/kết xuất khi cửa sổ trình duyệt không được lấy tiêu điểm bằng Chrome Beta phiên bản 87 và chromedriver phiên bản(87/86)
- Đã giải quyết vấn đề 3657: Đã hết thời gian chờ của trình duyệt nền chụp ảnh màn hình
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 87.0.4280.20
Hỗ trợ Chrome phiên bản 87
- Đã giải quyết vấn đề 2421: Xoá các kênh chuyển tiếp cổng cũ trên máy chủ adb Android
- Đã giải quyết vấn đề 3474: Cần cập nhật danh sách thiết bị di động được mô phỏng
- Đã giải quyết vấn đề 3507: Triển khai "get computed role" (lấy vai trò được tính toán)
- Đã giải quyết vấn đề 3508: Triển khai "get computed label" (nhận nhãn được tính toán)
- Đã giải quyết vấn đề 3584: Đổi tên tuỳ chọn dòng lệnh ChromeDriver --whitelisted-ips
- Đã giải quyết vấn đề 3588: Kết nối WebSocket hai chiều
- Đã giải quyết vấn đề 3594: Thao tác điều hướng hoàn tất quá sớm nếu OOPIF tải trước trang chính
- Đã giải quyết vấn đề 3598: Một lựa chọn dòng lệnh cho cổng devtools được chuyển tiếp đến socket webview_devtools_remote
- Vấn đề 3608 đã được giải quyết: Chromedriver debuggerAddress không hỗ trợ ipv6
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 86.0.4240.22
Hỗ trợ Chrome phiên bản 86
- Đã giải quyết vấn đề 3370: Tắt Chrome đúng cách nếu không cookie sẽ không được lưu chính xác vào tệp duy trì SQLite
- Đã giải quyết vấn đề 3401: Get Element Location JS không xác định được tâm nhìn thấy của phần tử
- Đã giải quyết vấn đề 3462: Đối với sendKeys, khoá CMD không hoạt động trên MAC
- Đã giải quyết vấn đề 3541: Cải thiện nhật ký giữa Client và ChromeDriver
- Đã giải quyết vấn đề 3559: Xuất phiên bản Chrome khi ChromeDriver báo cáo là không tương thích
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 85.0.4183.87
Hỗ trợ Chrome phiên bản 85
- Đã giải quyết vấn đề 3578: Chrome 85 không còn cho phép tương tác mượt mà với các cửa sổ khi hộp thoại cảnh báo đang mở
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 85.0.4183.83
Hỗ trợ Chrome phiên bản 85
- Vấn đề đã giải quyết 3577: ChromeDriver 85 không phát hiện thấy thư mục Chrome đã thay đổi (C:\Program Files)
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 85.0.4183.38
Hỗ trợ Chrome phiên bản 85
- Đã giải quyết vấn đề 3214: ChromeDriver78: Sendkeys đặt lại lựa chọn văn bản bằng nội dung có thể chỉnh sửa
- Đã giải quyết vấn đề 3376: Xoá lệnh LaunchApp khỏi ChromeDriver
- Đã giải quyết vấn đề 3432: Đôi khi
NavigationTrackerkhông phát hiện được thời điểm trang đã tải xong - Đã giải quyết vấn đề 3481: Điểm cuối In mới theo quy cách w3c
- Đã giải quyết vấn đề 3488: driver.get không gửi lỗi khi proxy được định cấu hình sai
- Đã giải quyết vấn đề 3502: Sử dụng
document.hasFocus()để kiểm tra xem phần tử có được lấy tiêu điểm hay không - Đã giải quyết vấn đề 3515: selenium.common.exceptions.WebDriverException: Message: unknown error: bad inspector message
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 84.0.4147.30
Hỗ trợ Chrome phiên bản 84
- Đã giải quyết vấn đề 3420: sau khi chuyển sang cửa sổ in, chromedriver ngừng phản hồi
- Đã giải quyết vấn đề 3421: Trình điều khiển trả về văn bản bằng bảng chữ cái Kirin mà không có kiểu
- Đã giải quyết vấn đề 3422: GetElementText bị lỗi với nguyên mẫu 1.6.0.3
- Đã giải quyết vấn đề 3434: Không thể nhận thông báo "assert" từ nhật ký "browser"
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 83.0.4103.39
Hỗ trợ Chrome phiên bản 83
- Cập nhật Chromedriver để hoạt động chính xác với prototype.js.
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 83.0.4103.14
Hỗ trợ Chrome phiên bản 83
- Đã giải quyết vấn đề 1778: Không dùng launchApp trong ChromeDriver nữa
- Đã giải quyết vấn đề 2520: InitSession có thể chờ vô thời hạn khi Chrome không phản hồi
- Đã giải quyết vấn đề 3120: Tải xuống ở chế độ không có giao diện người dùng từ thẻ mới
- Đã giải quyết vấn đề 3234: Xác nhận dấu chấm phẩy được tìm thấy trước chuỗi con
- Đã giải quyết vấn đề 3240: ExecuteGetElementRect không kiểm tra trạng thái được trả về từ GET_SIZE
- Vấn đề đã giải quyết 3331: Phương thức
get_cookies()đang trả về các khoá "expiry" thuộc loại double, nhưng phải là int64 ở chế độ w3c - Đã giải quyết vấn đề 3332: Hết thời gian chờ thử lại được ghi nhật ký là nghiêm trọng
- Đã giải quyết vấn đề 3339: Chromedriver thoát đột ngột với mã rỗng, tín hiệu SIGTRAP
- Đã giải quyết vấn đề 3351: Cải thiện thông báo Cân nhắc về bảo mật
- Đã giải quyết vấn đề 3352: Hỗ trợ SendKeys cho các phần tử màu
- Đã giải quyết vấn đề 3353: Chờ điều hướng đang chờ xử lý tiếp tục sau khi huỷ ngữ cảnh khung
- Đã giải quyết vấn đề 3375: Chromedriver phiên bản 80 bị treo khi getPageSource trên một số trang web
- Đã giải quyết vấn đề 3383: ChromeDriver 80 trở lên trên Windows có vẻ như thoát hoặc dừng ở một số phần tử hoặc lệnh nhấp nhất định
- Đã giải quyết vấn đề 3399: Xoá quy trình kiểm tra wasThrown
ChromeDriver 81.0.4044.138
Hỗ trợ Chrome phiên bản 81
- Cập nhật Chromedriver để hoạt động chính xác với prototype.js.
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 81.0.4044.69
Hỗ trợ Chrome phiên bản 81
- Đã khắc phục: Chromedriver gặp sự cố khi getPageSource trên một số trang web.
- Đã khắc phục: ChromeDriver gặp sự cố đối với một số lệnh nhấp hoặc phần tử.
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 81.0.4044.20
Hỗ trợ Chrome phiên bản 81
- Đã khắc phục lỗi khi cố gắng lấy vị trí của phần tử HTML.
- Các lệnh Get và Add Cookie hiện đã dành riêng cho khung hình.
- Giải quyết một số vấn đề xảy ra với những trang web xác định lại các đối tượng Javascript tiêu chuẩn.
- ChromeDriver sẽ tiếp tục đợi quá trình tải hoàn tất sau khi nhận được thông báo Target Closed (Đóng mục tiêu).
- Chromedriver hiện trả về mã lỗi tuân thủ quy cách cho thời gian chờ
- Đã khắc phục: ChromeDriver có thời gian phản hồi chậm bất thường đối với Lệnh NewSession.
- Giờ đây, bạn có thể đặt thời gian chờ do người dùng xác định là hơn 10 phút.
- Đã khắc phục: ChromeDriver không thể kết nối với Công cụ cho nhà phát triển do không khớp giữa IPv4 và IPv6.
- Khôi phục thứ tự tìm kiếm cho tệp nhị phân Chrome trên Linux.
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 80.0.3987.106
Hỗ trợ Chrome phiên bản 80
- Khôi phục thứ tự tìm kiếm cho tệp nhị phân Chrome trên Linux
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 80.0.3987.16
Hỗ trợ Chrome phiên bản 80
- Khắc phục lỗi Tải trang cố định bị huỷ khi sử dụng một proxy.
- Chromedriver hiện đợi Khung hiện tại tải.
- Nhật ký ChromeDriver sẽ bao gồm cổng mà trình điều khiển sử dụng.
- Đã bật SetGeoLocation cho chế độ w3c.
- Đã thêm văn bản Cảnh báo bị thiếu cho trạng thái UnexpectedAlertOpen.
- Cải thiện thông báo khi tiện ích CRX2 được tải.
- Khắc phục một tình huống tương tranh có thể xảy ra trong ExecuteGetPageSource.
- ChromeDriver sẽ thêm cờ --ignore-certificate-errors khi chức năng acceptInsecureCerts là true
- Cập nhật thông báo lỗi và trạng thái trả về cho trường hợp không có ngữ cảnh thực thi như vậy
- Đã khắc phục: ChromeDriver có thể chặn vô thời hạn trong khi chờ thao tác điều hướng đang chờ xử lý.
- Đã thêm thuộc tính SameSite vào AddCookie và GetCookie.
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 79.0.3945.36
Hỗ trợ Chrome phiên bản 79
Bao gồm thay đổi sau so với phiên bản 79.0.3945.16:
- Khắc phục lỗi tính toán toạ độ phần tử không chính xác
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 79.0.3945.16
Hỗ trợ Chrome phiên bản 79
- Khắc phục sự cố ChromeDriver do cảnh báo javascript được kích hoạt trong quá trình thực thi lệnh
- Khắc phục lỗi khiến Chromedriver bị khoá khi một cảnh báo được kích hoạt trong lúc chụp ảnh màn hình
- Đã xoá --ignore-certificate-errors khỏi lệnh khởi chạy Chrome
- Đã thay đổi nền tảng và platformName thành windows trên Win10
- Đã khắc phục window.navigator.webdriver không xác định khi "enable-automation" bị loại trừ
- Đã sửa thử nghiệm WPT "test_not_editable_inputs[hidden]"
- Đã khắc phục lỗi "Không thể nhấp vào phần tử" khi sử dụng chế độ không có giao diện người dùng
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 78.0.3904.105
Hỗ trợ Chrome phiên bản 78
Bao gồm thay đổi sau so với phiên bản 78.0.3904.70: * Đã khắc phục lỗi tính toán sai toạ độ phần tử
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 78.0.3904.70
Hỗ trợ Chrome phiên bản 78
Bao gồm thay đổi sau so với phiên bản 78.0.3904.11:
- Đã huỷ thay đổi để điều chỉnh kích thước ảnh chụp màn hình trên màn hình võng mạc do có nhiều vấn đề được báo cáo
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 78.0.3904.11
Hỗ trợ Chrome phiên bản 78
- Đã khắc phục một số vấn đề trong quá trình chuyển đổi tuần tự đối tượng JavaScript
- Đã khắc phục một lỗi trong tính năng so khớp khả năng của Chrome trên Android
- Đã triển khai tính năng tự động hoá quyền
- Kích thước ảnh chụp màn hình cố định trên màn hình retina
- Đã khắc phục lỗi hết thời gian chờ tải trang trong một số trường hợp
- Cải thiện khả năng so khớp platformName
- Đã khắc phục mã lỗi trả về trong khi di chuyển con trỏ đến các lựa chọn trong danh sách thả xuống
- Khắc phục một vấn đề ảnh hưởng đến quá trình tải xuống ở chế độ không đầu
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 77.0.3865.40
Hỗ trợ Chrome phiên bản 77
Bao gồm các thay đổi sau so với phiên bản 77.0.3865.10:
- Đã khắc phục 2 lỗi khi chuyển đổi tuần tự và chuyển đổi không tuần tự các đối tượng JavaScript
- Đã khắc phục việc xử lý platformName: android trong khi so khớp các chức năng
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 77.0.3865.10
Hỗ trợ Chrome phiên bản 77
- Khắc phục một số vấn đề trong quá trình triển khai Actions API
- Cải thiện việc thực thi mã JavaScript và xử lý kết quả
- Khắc phục lỗi từ chối không chính xác các yêu cầu POST có nội dung trống ở chế độ OSS
- Trình theo dõi điều hướng mạnh mẽ hơn
- Hỗ trợ chiến lược tải trang tức thì
- Thêm lệnh Cửa sổ mới theo quy cách WebDriver của W3C
- Hỗ trợ lưu tệp tải xuống ở chế độ không có giao diện người dùng
- Bổ sung tính năng hỗ trợ để tải các tiện ích CRX3
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 76.0.3809.126
Hỗ trợ Chrome phiên bản 76
Bao gồm các thay đổi sau so với phiên bản 76.0.3809.68:
- Đã khắc phục 2 lỗi khi chuyển đổi tuần tự và chuyển đổi không tuần tự các đối tượng JavaScript
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 76.0.3809.68
Hỗ trợ Chrome phiên bản 76
Bao gồm các thay đổi sau so với phiên bản 76.0.3809.25:
- Khắc phục lỗi khi phát hiện tham chiếu vòng tròn trong các đối tượng JavaScript
- Khắc phục lỗi khiến ChromeDriver gặp sự cố khi xảy ra một số loại lỗi JavaScript
- Đã khắc phục một lỗi ngăn API thao tác tương tác với các phần tử bên trong shadow DOM
- Đã khắc phục một lỗi trong việc theo dõi trạng thái của phím bổ trợ giữa các lệnh API hành động
- Khắc phục một lỗi trong việc theo dõi vị trí con trỏ giữa các lệnh API hành động
- Lưu lỗi "Không thể gọi lệnh không theo tiêu chuẩn W3C khi ở chế độ W3C" vào tệp nhật ký khi lỗi này xảy ra
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 76.0.3809.25
Hỗ trợ Chrome phiên bản 76
Bao gồm những thay đổi sau so với phiên bản 76.0.3809.12:
- Khắc phục lỗi từ chối không chính xác các yêu cầu POST có nội dung trống ở chế độ OSS
- Đã thêm các điểm cuối mới để truy xuất nhật ký Chrome
- Đã thêm điểm cuối cho lệnh Is Displayed ở chế độ W3C
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 76.0.3809.12
Hỗ trợ Chrome phiên bản 76
- Hoàn tất việc triển khai Actions API
- Cải thiện khả năng tuân thủ quy cách của quy trình xử lý thời gian chờ tập lệnh
- Cải thiện việc chuyển đổi kết quả từ lệnh Thực thi tập lệnh thành dữ liệu nối tiếp
- Khắc phục các vấn đề khi cuộn phần tử vào chế độ xem
- Thêm tính năng xử lý khoá Huỷ được xác định trong thông số kỹ thuật WebDriver
- Đã khắc phục quy trình xử lý phản hồi lỗi cảnh báo chưa được xử lý
- Đã khắc phục lỗi xử lý phần tử
<details> - Cập nhật tuỳ chọn excludeSwitches để cho phép sử dụng dấu gạch ngang tuỳ chọn ở đầu trong tên công tắc
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 75.0.3770.140
Hỗ trợ Chrome phiên bản 75
Bao gồm những thay đổi sau so với phiên bản 75.0.3770.90:
- Khắc phục lỗi khiến ChromeDriver gặp sự cố khi xảy ra một số loại lỗi JavaScript
- Khắc phục lỗi duy trì trạng thái của phím bổ trợ giữa các thao tác
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 75.0.3770.90
Hỗ trợ Chrome phiên bản 75
Bao gồm những thay đổi sau so với phiên bản 75.0.3770.8:
- Khắc phục lỗi từ chối không chính xác các yêu cầu POST có nội dung trống ở chế độ OSS
- Thêm các điểm cuối mới để truy xuất nhật ký Chrome
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 75.0.3770.8
Hỗ trợ Chrome phiên bản 75
Thay đổi đáng chú ý nhất là ChromeDriver hiện chạy ở chế độ tuân thủ tiêu chuẩn W3C theo mặc định. Những thay đổi khác bao gồm:
- Khắc phục một lỗi khiến sự kiện làm mờ được kích hoạt 2 lần trong quá trình xoá phần tử
- Đổi tên capability loggingPrefs thành goog:loggingPrefs, theo yêu cầu của tiêu chuẩn W3C
- Khắc phục lỗi xử lý ở chế độ W3C
- Xử lý chính xác việc tạo cookie mà không có dấu chấm ở đầu trong tên miền
- Cho phép giá trị rỗng cho thời gian chờ tập lệnh
- Đã sửa lệnh Fixed Element Send Keys thành tệp đầu vào có thuộc tính "multiple"
- Đã khắc phục lệnh Get Active Element (Lấy phần tử đang hoạt động) để trả về lỗi "no such element" (không có phần tử nào như vậy) khi không có phần tử đang hoạt động
- Đã sửa lỗi điều hướng đến URL có định dạng không chính xác để trả về lỗi "invalid argument" (đối số không hợp lệ)
- Đã sửa mã trạng thái HTTP khi nhận được mã phiên không hợp lệ
- Đã sửa phản hồi lỗi khi thiếu hoặc sai định dạng tham số đầu vào
- Đã sửa lệnh Thực thi tập lệnh để xử lý chú thích JavaScript theo dòng
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 74.0.3729.6
Hỗ trợ Chrome phiên bản 74
- Khắc phục lỗi tạo tệp debug.log không mong muốn trên Windows
- Đã khắc phục lỗi nhấp chuột và kéo / thả trong tài liệu SVG
- Đã thêm tiêu đề cache-control vào các phản hồi từ ChromeDriver
- Đã khắc phục loại lỗi khi lượt nhấp bị chặn bởi một phần tử khác
- Khắc phục một lỗi khiến ChromeDriver không hoạt động trên các thiết bị Linux không có /dev/shm
- Đã khắc phục một số loại sự kiện nhấp đúp
- Đã sửa lệnh Get Sessions
- Đã sửa lỗi kiểm tra trong lệnh Chuyển sang khung
- Đã sửa lệnh Lấy nguồn trang
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 73.0.3683.68
Hỗ trợ Chrome phiên bản 73
- Khắc phục lỗi tạo tệp debug.log không mong muốn trên Windows
- Đã khắc phục mã lỗi do lệnh Thực thi tập lệnh trả về trong một số trường hợp
- Đã thêm tiêu đề cache-control vào các phản hồi từ ChromeDriver
- Theo mặc định, máy chủ HTTP sẽ duy trì kết nối
- Đã sửa lệnh Đóng cửa sổ để xử lý đúng các lời nhắc cho người dùng
- Đã khắc phục mã lỗi được trả về trong khi gửi khoá đến phần tử bị vô hiệu hoá
- Cải thiện khả năng tuân thủ quy cách của việc xử lý giá trị thời gian chờ
- Cải thiện việc tuân thủ quy cách của lệnh Thêm cookie
- Tăng độ dài hàng đợi nghe của máy chủ HTTP
- Đã sửa lệnh Is Element Displayed trong DOM tối phiên bản 0
- Thêm cảnh báo về thay đổi hành vi của lệnh Xoá phần tử trong tệp nhật ký
- Đã sửa lệnh Thực thi tập lệnh để chuyển đổi document.all thành định dạng JSON một cách chính xác
- Cải thiện khả năng xử lý tham chiếu phần tử không hợp lệ
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 2.46
Hỗ trợ Chrome phiên bản 71-73
- Đã khắc phục mã lỗi do lệnh Thực thi tập lệnh trả về trong một số trường hợp
- Theo mặc định, máy chủ HTTP sẽ duy trì kết nối
- Đã sửa lệnh Đóng cửa sổ để xử lý đúng các lời nhắc cho người dùng
- Đã khắc phục mã lỗi được trả về trong khi gửi khoá đến phần tử bị vô hiệu hoá
- Cải thiện khả năng tuân thủ quy cách của việc xử lý giá trị thời gian chờ
- Cải thiện khả năng tuân thủ quy cách của lệnh Thêm cookie
- Cải thiện việc tuân thủ quy cách của lệnh Switch to Frame
- Tăng độ dài hàng đợi nghe của máy chủ HTTP
- Đã sửa lệnh Is Element Displayed trong DOM tối phiên bản 0
- Lệnh Nhấp đúp vào phần tử cố định
- Thêm cảnh báo về thay đổi hành vi của lệnh Xoá phần tử trong tệp nhật ký
- Đã sửa lệnh Thực thi tập lệnh để chuyển đổi document.all thành định dạng JSON một cách chính xác
- Cải thiện khả năng xử lý tham chiếu phần tử không hợp lệ
Để biết thêm thông tin chi tiết, hãy xem ghi chú phát hành.
ChromeDriver 2.45
Hỗ trợ Chrome phiên bản 70-72
- Đã khắc phục: Phiên mới không tuân thủ quy cách
- Đã khắc phục lỗi ChromeDriver không được khởi chạy Chrome nếu phiên bản Chrome và ChromeDriver không tương thích
- Khắc phục lỗi lệnh Tìm phần tử trả về mã lỗi không chính xác khi sử dụng bộ định vị không hợp lệ
- Đã khắc phục một số mã trạng thái ChromeDriver không chính xác
- Đã sửa lỗi biên dịch trong JS bên trong WebViewImpl::DispatchTouchEventsForMouseEvents
- Các lệnh kích thước cửa sổ cố định phải xử lý lời nhắc của người dùng
- Đã khắc phục lỗi ChromeDriver không khởi động Chrome đúng cách với lựa chọn "user-data-dir=" của Chrome
- Lệnh Trạng thái cố định không tuân thủ quy cách
- Đã sửa lỗi Thêm tính năng hỗ trợ cho strictFileInteractability
ChromeDriver 2.44
Hỗ trợ Chrome phiên bản 69-71
- Đã sửa lỗi WindowMaximize trên máy Mac
- Đã sửa lỗi "lỗi mở cảnh báo" không chính xác cho lệnh gọi xử lý cửa sổ
- Fixed Element Send Keys (Gửi khoá phần tử cố định) sẽ nhận được thuộc tính "text" ở chế độ W3C
- Trường hợp đặc biệt về XML cố định của Is Element Enabled (Có bật phần tử hay không) không được xử lý theo quy cách
- Đã khắc phục trường hợp đặc biệt về XML của Get Element CSS Value không được xử lý theo quy cách
- Đã sửa lỗi Set Window Rect cần kiểm tra xem có dữ liệu đầu vào không hợp lệ hay không
- Khắc phục lỗi Hỗ trợ các chế độ unhandledPromptBehavior mới
ChromeDriver 2.43
Hỗ trợ Chrome phiên bản 69-71
Các thay đổi bao gồm:
- Đã khắc phục Lỗi phân tích cú pháp cấu hình proxy không tuân thủ tiêu chuẩn
- Đã khắc phục lệnh Khởi chạy ứng dụng không ổn định
- Đã khắc phục Lỗi chụp ảnh màn hình của phần tử bên trong iFrame không chính xác
- Đã thêm ChromeDriver hỗ trợ thay đổi kích thước cửa sổ qua một kết nối từ xa
- Đã khắc phục Lỗi mã không được xử lý trong phần tử Xoá
- Đã khắc phục Lỗi không chờ cho đến khi phần tử xuất hiện
- Đã khắc phục Lỗi chưa triển khai thuộc tính phần tử Get
- Fixed Switch to Frame không tuân thủ quy cách
- Đã khắc phục lỗi Execute Async Script không trả về mã lỗi tuân thủ quy cách
- Đã khắc phục lỗi Thực thi tập lệnh không trả về mã lỗi tuân thủ quy cách
- Đã khắc phục Mã lỗi trong ExecuteGet không tuân thủ thông số kỹ thuật
- Đã khắc phục lỗi Send Alert Text không trả về mã lỗi tuân thủ quy cách
- Đã khắc phục clear() trên một loại đầu vào="date" giả vờ phần tử không thể chỉnh sửa được
- Chromedriver cố định sẽ nhận được mã nhận dạng cửa sổ cho thẻ được mở theo cách thủ công
- Đã khắc phục Lỗi cho phép thêm hoặc bắt đầu một tệp nhật ký mới cho chromedriver
- Đã khắc phục lỗi New Session không gọi chế độ w3c nếu cờ ở firstMatch
ChromeDriver 2.42
Hỗ trợ Chrome phiên bản 68-70
Các thay đổi bao gồm:
- Đã khắc phục ClickEelement trong tính năng Mô phỏng thiết bị di động
- Đã cố định IP trong danh sách cho phép bằng IPv4
- Khắc phục lỗi khởi động ChromeDriver bằng cờ whitelisted-ips trên hệ điều hành Mac
- Đã sửa SetTimeout để chấp nhận cả định dạng trước W3C và W3C
- Chụp ảnh màn hình phần tử cố định
- ChromeDriver cố định cũng đang tìm kiếm các tệp nhị phân Chrome trong PATH của hệ thống
- Đã khắc phục lỗi Phóng to cửa sổ và Toàn màn hình
- Triển khai tính năng phát lại nhật ký. ( hiện chưa hoạt động trên Android và Trình duyệt từ xa)
- Khắc phục một số mã lỗi không tuân thủ tiêu chuẩn W3C
- Khắc phục lỗi console.log có nhiều đối số không được xử lý đúng cách
- Đã khắc phục GetElementRect phải cho phép số thực có độ chính xác gấp đôi
- Mô phỏng thao tác chạm cố định
ChromeDriver 2.41
Hỗ trợ Chrome phiên bản 67-69
Các thay đổi bao gồm:
- Khắc phục vấn đề khi ChromeDriver chạy với lựa chọn "whitelisted-ips"
- Cổng gỡ lỗi từ xa được trả về trong các chức năng
- Triển khai việc lấy kích thước cửa sổ trên Android
- Cải thiện thông báo lỗi khi khởi chạy Chrome trên máy tính
- ChromeDriver nhanh chóng gặp lỗi khi không thể khởi động các tệp nhị phân của Chrome
- Giá trị trả về Close Window tuân thủ quy cách