Nội dung đã tải xuống

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ờ kImplicitWait cho các kiểm thử FindElement(s)WhileNavigating trong commands_unittest khi 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.h trên các tệp //chrome .cc, thực thi việc sử dụng callback.h khi các lệnh gọi lại thực sự được sử dụng (crrev.com/c/7200285, Lỗi: 40318405). Đã di chuyển logging::LoggingSettings từ base/logging.h sang tiêu đề riêng base/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 đến base/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ặp find(key) hiệu quả hơn (crrev.com/c/7705392, crrev.com/c/7693277, Lỗi: 452950815). Chèn ThreadDelegate thông qua hàm khởi tạo Thread để cải thiện khả năng đóng gói, đồng thời thêm lựa chọn Restartable vào Thread để đá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_buffers trên toàn bộ tệp thành macro UNSAFE_TODO() chi tiết trên chrome/ (crrev.com/c/7132241, Lỗi: 409340989). Rút ngắn IOBuffer->span().first() thành IOBuffer->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 đồ module trong chromedriver_py_tests sau 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 ElementClick xử 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 DecodeURLMode thành DecodeUrlModeDecodeURLEscapeSequences() thành DecodeUrlEscapeSequences() (crrev.com/c/7593238). Giới thiệu url::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.h không cần thiết khỏi tệp //chrome (crrev.com/c/7595125, Lỗi: 40318405). Đã xoá logic BUILDFLAG(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_TODO trong 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 đề Origin cho 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 testWebviewDetactedDuringClick sang 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ộ

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, textareacontenteditable. Đ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ác send_keys dà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 testClientHintsDeviceNameIPhoneXtestClientHintsDeviceNameIPad bằ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() sang std::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ành std::string_view để tránh phân bổ chuỗi không cần thiết khi sử dụng substr() (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ại BodyAsStringCallbackDeprecated cũ trong các lượt sử dụng SimpleURLLoader bằng BodyAsStringCallback. Lệnh gọi lại này sử dụng std::optional thay 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-access dự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 WebViewImpl mẹ 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.h trên các tệp //chrome .cc, thực thi việc sử dụng callback.h khi các lệnh gọi lại thực sự được sử dụng (crrev.com/c/7200285, Lỗi: 40318405). Đã di chuyển logging::LoggingSettings từ base/logging.h sang tiêu đề riêng base/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ụng base::HexEncode sang base::HexEncodeLower mới hơn (crrev.com/c/7103100, Lỗi: 456472080).
  • An toàn bộ nhớ (spanification): Di chuyển WriteToPipeWriteToPipeNoBestEffort trong PipeBuilderPipeConnection kiểm thử đơn vị để chấp nhận base::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_buffers trên toàn bộ tệp thành macro UNSAFE_TODO() chi tiết trên chrome/ (crrev.com/c/7132241, Lỗi: 409340989). Rút ngắn IOBuffer->span().first() thành IOBuffer->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 Prewarm trong 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.h cho scoped_refptr.h trong các tiêu đề //chrome khi 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ập GURL sang 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.cc bằng ADD_FAILURE() (crrev.com/c/6998270). Thêm một kiểm thử hồi quy cho crbug.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:processID khả 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ới moz:processID củ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 CheckAppInstalled trê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 IgnoreDuplicateNavs ghi đè 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à logic Switches::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ằng base::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) trong base::JSONReader::Readbase::JSONReader::ReadAndReturnValueWithError (crrev.com/c/6990988, crrev.com/c/6980533, Lỗi: 446188265). Xoá các pragma #pragma allow_unsafe_buffers trê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 macro LazyInstance bị rò rỉ (crrev.com/c/6781377, Lỗi: 432815283). Đã thêm các tiêu đề bị thiếu cho http_response_headers.h thô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êm CHECK khô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 testDoesntCrashOnClosingBrowserFromAsyncScript trê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/test GN được định dạng tự động (crrev.com/c/6789277, Lỗi: 40760278).
  • FedCM: Ra mắt hàm ShouldShowAccountsPassiveDialog cho IdentityDialogController để đồ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.setPrewarmingAllowed và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ăng DSEPrewarm trong fieldtrial_testing_config.json cho 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 WebLayer khô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-tracing vào run_wpt_tests.py, khớp với hành vi của run_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 memset có 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ên chrome/ để 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ị #include còn thiếu cho //base/time/time.h thô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:hidden do 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ợp PerformActions khác (crrev.com/c/6735230, Lỗi: 42322257).
  • Android: Đã khắc phục hàm CheckAppInstalled trên các phiên bản Android cũ (trước Android 11) khi cờ --user cur cho 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_tests do tính năng DSEPrewarm gâ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 ShouldShowAccountsPassiveDialog vào IdentityDialogController (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ộ

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ằng std::string_view trên //chrome/test (crrev.com/c/6628089, Lỗi: 422940464). Đã thêm base/strings/string_view_util.h khi base::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 //chrome bằ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.h khi 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ủa base/debug/stack_trace.h (crrev.com/c/6622838).
  • Thử nghiệm: Chuyển lựa chọn --driver-logging sang run_wpt_tests.py, cho phép tập lệnh trích xuất dữ liệu ChromeDriver và trình duyệt stderr ngay 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.py bằng cách không cho phép các mục tiêu android_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 localStateprefs khi 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-dir tuỳ 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 kTargetDetached và cố gắng truy cập vào WebView khô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ử crossbench trê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_x64 khô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::OnReadDuringHandshakeWebSocket::OnReadDuringOpen bằng base::span, giải quyết các cảnh báo unsafe-buffer-usage (crrev.com/c/6557346, Lỗi: 354307328). Xoá các pragma #pragma allow_unsafe_buffers không cần thiết trên chrome/test/chromedriver khô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"#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 RSAPrivateKey sang crypto::PrivateKeySHA256HashString sang crypto::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 OwnContributionEstimate và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 ClearDisplayFeatures trê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:channel nế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 PdfOopif bị 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_view cho tên tệp trong LogMessage và 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::GetVar trên //chrome để sử dụng API trả về std::optional thay 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.h vào một tiêu đề windows_handle_util.h chuyê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 Browser dành riêng cho Android và triển khai API Browser.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-dir song song trong testBrowserWithUsedUserDataDir khi chạy trên chrome-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 catapult theo cách thủ công và cập nhật các tệp pydeps cũng như các tham chiếu devil_util liê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ụng Browser.close hoặc SIGTERM) thay vì SIGKILL mặc định. Điều này giúp các trình gỡ lỗi như rr có 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 --wrapper bằ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 khi args đượ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-port khi --user-data-dir là 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 PdfOopif bị 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ái connection refused khi 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_view cho tên tệp trong LogMessage và 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-calls khá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.json cho giai đoạn ExtensionManifestV2Unsupported do 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_LACROS và dữ liệu kiểm thử có liên quan) khỏi chrome/test/ vì Lacros đang bị ngừng sử dụng, tiêu chuẩn hoá trên IS_CHROMEOS (crrev.com/c/6284446, Lỗi: 354842935).
  • Dọn dẹp: Xoá mọi dấu vết của tiện ích md5sum sau khi thay thế bằng devil_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ỏi ResultCodeIsNormalResultCode(), 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_bound trong ChromeDriver bằng cách tận dụng std::ranges::lower_bound (crrev.com/c/6223172, Lỗi: 392116519). Ngăn chặn cảnh báo unsafe_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ủa std::to_arrayconstexpr để 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ách nav-tracking-mitigations và đượ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 đổi chromium-bidi ở nguồn. Thuộc tính channel cũ 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.exe trê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_page củ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 DCHECK trong base::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ới UnicodeString thay vì chỉ kiểm tra độ dài std::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_shell sang headless_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ộ

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ẻ. WebViewImpl hiệ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 qua AutoAttach. 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ăng enable_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 URL chrome-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ển enableExtensionTargets sang 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ắc beforeunload mà 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?test gâ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:blankdocumentURL!=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ỗi Timeout tiêu chuẩn (crrev.com/c/6012427, Lỗi: 42323825).
  • Chẩn đoán: Chuyển tiếp lỗi kTargetCrashed trực tiếp thông qua NavigationTracker. 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ụng SendCommand thay vì PostCommand khi 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ủa ExecuteScript bằ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 FedCmIdpSigninStatus vì 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 Print trong tập lệnh log_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::list sang base::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::array trên chrome/ 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ụng size_t nghiê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}tests toàn màn hình ngược dòng về wpt_internal/testdriver hiện hỗ trợ các chế độ này (crrev.com/c/6088404).
  • Thử nghiệm: Đã sửa wptrunner cho 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-directory mộ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_shell kế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 repeatretry-limit và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-repeatisolated-script-test-launcher-retry-limit tiê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-limit mặc định đã được thay đổi thành 0 (crrev.com/c/5953326, Lỗi: 374681919).
  • WebSockets: Triển khai WebSocketConnection và các lớp liên quan trong EmbeddedTestServer, cho phép các kiểm thử liên quan đến WebSocket di chuyển khỏi SpawnedTestServer. Đ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 testClickNavigateRemoteToLocal trê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 GoBackGoForward. Trước đây, các lệnh này sẽ không thành công nếu Page.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 ScriptTimeout tiê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 Atoms CLEAR) đượ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 trong GetElementTagName để 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 định css/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-shell cũ 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.txt khô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-dir hoặ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-bidi lê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ỗi NoSuchShadowRoot khi 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 userNameuserDisplayName (crrev.com/c/5905423, Lỗi: 367915823).

Sửa lỗi

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::span trong net::HttpUtil (crrev.com/c/5854420) và di chuyển base::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ụ: trong std::map, std::unordered_map) thành raw_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 macro base/ 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ằng std::string_view hoặc các tham chiếu const khi thích hợp, đồng thời xoá các trình đủ tiêu chuẩn const khô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 unhandledPromptBehavior trực tiếp cho Mapper thông qua lệnh session.new khi 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ỏi MapperOptions (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ố --chromedriver vào tập lệnh bisect-builds.py cho 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ử wptrunner bằng cách thay thế chuỗi chrome đượ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ềm command chi 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.testClickNavigateLocalToLocal không ổn định trên máy Mac (crrev.com/c/5806894, Lỗi: 361521805) và thử nghiệm ChromeDriverTest.testClickElement*ObscuredByScrollBar khô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ấp unhandledPromptBehavior đã 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 ScopedTestMV2Enabler trong 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 Set trong 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ủa Array.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, MaskWebSocketFramePayloadWriteWebSocketFrameHeader bằng base::span (crrev.com/c/5764863, crrev.com/c/5743019, crrev.com/c/5722108, Lỗi: 40284755, Lỗi: 354307327). Đã thêm #pragma allow_unsafe_buffers trên chrome/* để 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 macro UNSAFE_BUFFERS() không tuân thủ thành UNSAFE_TODO() (crrev.com/c/5786346). Viết lại các trường base::span thành base::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 WebSocketEncoder bằng cách hoàn nguyên quá trình di chuyển bị tạm dừng sang //services/network/public/cpp/server và 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-port và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ụng SendCommand() thay vì SendCommandAndGetResult(), vì lệnh CDP setSensorOverrideReadings khô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ộ

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ện target.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ượng WebViewDevToolsClient (crrev.com/c/5527584, Lỗi: 339773537).
  • Tính ổn định: Khắc phục vấn đề trong đó lệnh Switch To Window có 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 DCHECK khi 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.getTree trả 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.html trong đó 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ác selectAccount thực sự thành công (crrev.com/c/5398379, Lỗi: 331237776).
  • Kiểm thử: Đã khắc phục lỗi DCHECK trong 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ới kExtendedASCIIStart (crrev.com/c/5565276, Lỗi: 40284755).
  • Kiểm thử: Đã khắc phục kiểm thử scrollend-event-fires-to-iframe-window.html WPT 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.py khô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ằng NOTREACHED_IN_MIGRATION() trên thư mục chrome/ để chuẩn bị cho việc tạo NOTREACHED() 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.txt cho 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.py cho content_shell, vì phạm vi WPT của Chromium đang chuyển hoàn toàn sang headless_shell + ChromeDriver (crrev.com/c/5589930). Sắp xếp lại các nút chuyển wptrunner theo 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ừ JavaScriptDialogManager trực tiếp vào DevToolsClientImpl, 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.testBrowsingContextTreeIsNotEmpty trê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::SendBidiCommandBidiTracker để 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-throttling khi 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ù BidiTracker hiệ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 NoSuchExecutionContext khô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 error thay vì lỗi invalid selector khi 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 operation tuâ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ỗi kSessionNotCreated tiê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 kNoSuchExecutionContext khô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 kForbidden khô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ộ

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 id từ Double thành base::Value. Điều này đảm bảo id đượ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 selectAccount thành công. Điều này giải quyết các lỗi kiểm thử khi selectAccount đượ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ọi fedcm_get_and_select_first_account khi 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.html WPT 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 động pointerUp, ngăn ChromeDriver gửi không chính xác các sự kiện pointerUp đồ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 ra stderr (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ềm stderr thay 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) sang crash_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 StackTrace củ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 testTakeLargeElementViewportScreenshot khô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ý chromedriver và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ằng run_blink_wptserve.py (crrev.com/c/5441189, Lỗi: 41494889).
  • Phần phụ thuộc: Đã xoá Closure khỏi danh sách phần phụ thuộc selenium-atoms, do đó xoá Closure khỏ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_annotations trong kho lưu trữ cơ sở (crrev.com/c/3398908, Lỗi: 1282422).
  • Định dạng: Đã áp dụng cấu hình clang-format mớ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 BiDiMapper trướ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 defaultBackupEligibilitydefaultBackupState vào lệnh "Thêm trình xác thực ảo" và backupEligibilitybackupState và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 --failfast và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 SetRPHRegistrationMode thông qua API testdriver-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::SetWindowBounds bằ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-dir thay vì --data-path khi chỉ định thư mục dữ liệu cho content_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::optional bằng std::optional trên toàn bộ cơ sở mã sau khi chuyển đổi absl::optional thà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ồm std::list, std::unordered_set, base::flat_set, std::stackstd::queue (crrev.com/c/5306923, Lỗi: 325302189).
  • Đã chuyển đổi WriteBigEndian() để sử dụng lượt chuyển đổi base::numerics byte hoặc BigEndianWriter (hiện chấp nhận base::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.js và 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ộc BiDiMapper và cập nhật lệnh gọi licenses.py để chỉ dựa vào tệp README selenium-atoms cho 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 StaleElementReference không chính xác; giờ đây, lỗi này sẽ trả về JavaScriptError mộ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.html cá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* khi test_driver.set_permission(...) truyền sai false thay vì null hoặc WindowProxy, 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ả ChromeImplDevToolsClientImpl, 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::string mớ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ị #include cho base/... để 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_METADATA trong chrome/test/ sang Buganizer (crrev.com/c/5284119, Lỗi: 1518875).
  • Ngăn wptrunner tạo tệp - cục bộ khi truyền -vvv bằng cách xoá công tắc chromedriver --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-port cho run_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()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/handles có 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 dialogtype trả về dữ liệu cũ nếu hộp thoại bị đóng từ bên ngoài (ví dụ: thông qua AbortController.abort) (crrev.com/c/5067504, Lỗi: 1506292).
  • FedCM: Xoá tiền tố nhà cung cấp khỏi lệnh ClickDialogButton vì 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.enable dư thừa được gửi từ mọi DevToolsEventListener, 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_shell thà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_role trên content_shell vì chưa được triển khai, ngăn chặn lỗi TypeError (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-atoms lê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ố origin cho 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ới StringPrintf() 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 ScopedTempDirWithRetry bằ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ới chrome-headless-shell ngoà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-name và 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 KeyboardLayoutEngine mặc định dưới dạng StubKeyboardLayoutEngine để ngăn ChromeDriver gặp sự cố do lượt truy cập DCHECK trong KeyboardLayoutEngineManager::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-shell trả 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 dialogtype và 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 qua AbortController.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-shell trê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ùng OZONE_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ụng base::BindLambdaForTesting thay vì base::Passed khô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.h không dùng nữa (crrev.com/c/5008994, Lỗi: 691162).
  • Chuẩn bị cho quá trình chuyển đổi net::IOBuffer thành một lớp không sở hữu bằng cách sử dụng net::IOBufferWithSize cho 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ành chrome_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 ConfirmIdpLogin FedCM webdriver thành lệnh ClickDialogButton có 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 crossbench vớ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ào chrome_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.newsession.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.status PureBiDi, 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.pdl và 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 qua testdriver.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-shell nế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 CLOSE khi 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_responsibility dướ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-http tiê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 coi window.frameElement là 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ành FromSecondsSinceUnixEpoch()) (crrev.com/c/4956111).
  • Cải tiến hàm khởi tạo net::StringIOBuffer và 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::StrCat bằng + (nếu có thể) và sử dụng base::AppendHexEncodedByte() (crrev.com/c/4963465, crrev.com/c/4977165).
  • Đổi tên DIR_SOURCE_ROOT thành DIR_SRC_TEST_DATA_ROOT trong 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 PureBidiTest khô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 confirmidpsignin có 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 MapSet; hiện các đối tượng này được chuyển đổi tuần tự chính xác thành Object thay vì Collection vì thiếu thuộc tính length (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 Signin thành Login (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ệ ~NOTFOUND bằng ^NOTFOUND trong 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 //url bằng std::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.html cho 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_page thay vì other (crrev.com/c/4842093).
  • Đổi tên mục tiêu bản dựng WPT chrome_wpt thành chrome_wpt_tests để đảm bảo tính nhất quán và xoá mục tiêu webdriver_wpt_tests dư thừa (crrev.com/c/4847474, Lỗi: 1474702).
  • Đã di chuyển run_py_tests.py từ thư viện optparse không dùng nữa sang argparse (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 crossbench vớ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 debuggerAddress trong 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ị platformName tiê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ên base::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_ptrbase::raw_ref để thay bằng các dạng thức không đủ tiêu chuẩn raw_ptrraw_ref thô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.py và 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ào client_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ên base::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

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 ConnectionRefused trong 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 NoSuchExecutionContextNoSuchWindow củ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ừ userAgent trê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 SessionNotCreated tiê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ụ wptrunner chính thức thay vì run_webdriver_tests.py tuỳ 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 ChromeLauncher và 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ới DevToolsHttpClient và 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_headless gây hiểu lầm thành BrowserInfo.is_headless_shell để cho rõ ràng (crrev.com/c/4650452, Lỗi: 4358).
  • Thay thế nhiều phương thức base::Value không dùng nữa bằng các phương thức base::Value::Dict tươ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 cho base::expected (crrev.com/c/4749459, crrev.com/c/4755226).
  • Triển khai các lệnh tự động hoá get_fedcm_dialog_titleselect_fedcm_account trong TestDriver cho 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 setdelayenabled hoạ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ào DevToolsHttpClient và giảm mức sử dụng SyncWebSocketFactoryBrowserInfo để 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 WaitForCondition chung bằng assertTrue để 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_ptr lơ 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 %s trong 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ề UnknownError không chính xác thay vì lỗi NoSuchElement tiê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.mobile phải là true nếu chuỗi userAgent chứ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 CDP Emulation.setDeviceMetricsOverride thay vì lệnh tương đương với miền Page khô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 Connect không dùng nữa khỏi DevToolsClient để 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::Dict hơn base::Value và thay thế các phương thức không dùng nữa như FindStringKey(), SetKey()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.h thay 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ỏi web_view.h (crrev.com/c/4518363, Lỗi: 3376).
  • Áp dụng thao tác đổi tên tự động base::raw_ptr thành raw_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 đến MobileEmulationOverrideManager để đặ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 DCHECK trong DevToolsClientImpl::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 WebViewImpl và 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::Value phiê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()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::GUID bằng base::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 config thay vì thuộc tính src không dùng nữa (crrev.com/c/4382231).
  • Xoá việc sử dụng ShadowDOMV0 khô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>) cho std::strlen trong web_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": true là 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": true là 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 NavigationTracker khô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