WebDriver BiDi – Tương lai của tự động hoá trên nhiều trình duyệt

Trong bài viết trước, chúng tôi đã kiểm tra các giao thức tự động hoá hiện có, cụ thể là WebDriver "Cổ điển" và Giao thức Chrome DevTools (CDP), cùng với các ưu điểm và hạn chế tương ứng.

Hãy tham gia WebDriver BiDi, tương lai của tính năng tự động hoá trình duyệt! Đây là một giao thức tự động hoá trình duyệt chuẩn mới đang được phát triển, nhằm kết hợp những tính năng tốt nhất của cả WebDriver "Cổ điển" và CDP. WebDriver BiDi hứa hẹn giao tiếp hai chiều, giúp giao tiếp nhanh theo mặc định và đi kèm với khả năng kiểm soát cấp thấp.

WebDriver BiDi
WebDriver "Cổ điển" Giao thức Chrome DevTools (CDP)
Hỗ trợ tốt nhất trên nhiều trình duyệt Nhắn tin nhanh, hai chiều
Tiêu chuẩn W3C Cung cấp quyền kiểm soát cấp thấp
Được xây dựng để kiểm thử

Mục tiêu của WebDriver BiDi là cho phép bạn viết mã kiểm thử bằng bất kỳ công cụ nào bạn yêu thích và tự động hoá các mã kiểm thử đó trong bất kỳ trình duyệt hoặc trình điều khiển nào, mang đến cho bạn sự linh hoạt tối đa.

Tầm nhìn đằng sau WebDriver BiDi.
Tầm nhìn đằng sau WebDriver BiDi

Chuẩn hoá

Nhóm làm việc WebDriver BiDi bao gồm nhiều nhà cung cấp trình duyệt, dự án tự động hoá trình duyệt nguồn mở và các công ty cung cấp giải pháp tự động hoá trình duyệt. Việc cộng tác này đảm bảo một tương lai đầy hứa hẹn cho việc tự động hoá trình duyệt.

Nhóm làm việc WebDriver BiDi
Nhóm làm việc WebDriver BiDi

Công việc chủ yếu được thực hiện trong kho lưu trữ GitHub này. Chúng tôi tổ chức các cuộc họp hằng tháng với tất cả các nhà cung cấp trình duyệt lớn để báo cáo tiến trình thực tế và thảo luận về các vấn đề cụ thể có thể gây tranh cãi và chưa được biết đến. Nhóm làm việc liên công ty đảm bảo rằng các quyết định được điều chỉnh cho phù hợp với tất cả các bên liên quan.

Việc thiết lập và triển khai một giao thức mới không phải là một việc nhỏ. Để làm được điều này, các nhà cung cấp cần phải nỗ lực phối hợp và làm việc cùng nhau. Quy trình này bao gồm:

  • Thông số kỹ thuật: quy trình yêu cầu nhận xét (RFC) để thu thập ý kiến phản hồi về đề xuất.
  • Xác minh: một loạt các chương trình kiểm thử có thể chạy trên nhiều nền tảng, đóng vai trò là nguồn đáng tin cậy cho tất cả các hoạt động triển khai.
  • Triển khai: trình duyệt triển khai các giao thức theo thông số kỹ thuật và vượt qua các bài kiểm thử xác minh.

Thử thách

Trong phần này, chúng ta sẽ tìm hiểu các thách thức khi triển khai WebDriver BiDi, vì WebDriver BiDi tìm cách tạo ra sự cân bằng giữa khả năng tương thích, khả năng hữu dụng và khả năng triển khai.

Không chỉ là bản sao CDP: hỗ trợ khả năng tương thích trên nhiều trình duyệt

Không thể sao chép trực tiếp CDP, với các phần tử dành riêng cho Chrome và DevTools, trong quy cách WebDriver BiDi. Việc triển khai CDP như hiện tại sẽ không khả thi đối với các trình duyệt khác, khiến cho một thông số kỹ thuật chỉ ghi lại cách thực hiện sẽ trở nên vô nghĩa.

Đảm bảo độ trễ thấp

WebDriver BiDi phải được thiết kế để xử lý độ trễ cao mà không làm giảm hiệu suất. Trong CDP, độ trễ thấp vì máy khách và máy chủ hầu như luôn chạy trong cùng một máy thực, nhưng điều này không đúng trong WebDriver BiDi. Do đó, WebDriver BiDi phải giảm thiểu số lượt đi và về cần thiết giữa ứng dụng và máy chủ.

Ưu tiên công thái học trong BiDi

Mặc dù nhà phát triển không cần phải tạo ứng dụng WebDriver BiDi từ đầu, nhưng điều quan trọng là tránh làm cho giao thức trở nên quá phức tạp. Một BiDi quá phức tạp không chỉ khó triển khai mà còn khó sử dụng, cản trở việc áp dụng và sử dụng.

Đảm bảo khả năng triển khai của BiDi

WebDriver BiDi phải được triển khai một cách thực tế, có tính đến các hạn chế của nhiều trình duyệt. Ví dụ: việc giữ lại tất cả các đối tượng JavaScript từng được BiDi hiển thị cho ứng dụng có thể dẫn đến rò rỉ bộ nhớ, trong khi việc không giữ lại đối tượng nào sẽ cản trở việc gỡ lỗi và tương tác với JavaScript của trang. Điều quan trọng là phải tìm được sự cân bằng để có thể tự động hoá trình duyệt một cách hiệu quả mà không làm giảm hiệu suất.

Vượt qua thử thách

Trong phần này, chúng ta sẽ thảo luận về các chiến lược được sử dụng để giải quyết những thách thức khi triển khai WebDriver BiDi.

Tạo nguyên mẫu nhanh

Việc giải quyết thách thức về khả năng triển khai là yếu tố quan trọng để BiDi thành công. Để đẩy nhanh tiến trình về quy cách và kiểm thử, chúng tôi đã áp dụng phương pháp tạo bản mô hình nhanh bằng NodeJS. Điều này không chỉ cho phép chúng tôi thử nghiệm nhiều giải pháp mà còn tạo điều kiện cho việc phát triển Kiểm thử nền tảng web.

Thiết kế để đảm bảo hiệu suất

Quyết định thiết kế này được đưa ra dựa trên hiệu suất vì trong một số trường hợp, độ trễ trong WebDriver BiDi là cao. Ví dụ: khi truy xuất mã nhận dạng đối tượng và giá trị từ trình duyệt, WebDriver BiDi chỉ yêu cầu một lượt truy cập, trong khi CDP yêu cầu hai lượt truy cập. Lý do là WebDriver BiDi có thể trả về cả mã nhận dạng và giá trị trong một phản hồi (kết quả không được chuyển đổi tuần tự JSON), trong khi CDP phải trả về các giá trị này riêng biệt.

Tập trung vào Kiểm thử nền tảng web (WPT)

Kiểm thử nền tảng web đóng vai trò quan trọng trong các tác phẩm của BiDi. Hiện đang bao gồm WebDriver "Cổ điển" và WebDriver BiDi, WPT đóng vai trò là tài liệu tham khảo đáng tin cậy cho tất cả các phương thức triển khai. Các chương trình kiểm thử này được thiết kế để chạy và được truyền qua nhiều phương thức triển khai, đảm bảo việc thực thi giao thức nhất quán trên nhiều trình duyệt. Đây là yếu tố quan trọng để WebDriver BiDi thành công. Xem kết quả WPT mới nhất trong trang tổng quan.

Kế hoạch và tiến trình hiện tại là gì?

Hãy xem lộ trình WebDriver BiDi để hiểu hướng đi của dự án. Lộ trình này đang trong quá trình phát triển và không ngừng thay đổi.

Hãy tham khảo Kiểm thử nền tảng web mới nhất để biết trạng thái triển khai trên các trình duyệt, vì đây là nguồn đáng tin cậy.

Theo dõi các mốc quan trọng của dự án để nắm bắt tiến trình của dự án.

Khám phá những thành tích đạt được trong năm 2023 và nắm bắt thông tin cập nhật mới nhất!

Hỗ trợ WebDriver BiDi: cách bạn có thể giúp đỡ

Bạn có hào hứng với tương lai của tính năng tự động hoá trình duyệt bằng WebDriver BiDi không? Sau đây là cách bạn có thể thể hiện sự ủng hộ:

  • Hãy trở thành người thử nghiệm và sử dụng sớm, góp phần định hình tương lai của WebDriver BiDi.
  • Hãy lan toả thông điệp này! Chia sẻ dự án trên mạng xã hội bằng hashtag #WebDriverBiDi.
  • Yêu cầu hỗ trợ. Gửi yêu cầu về tính năng hoặc kiểm tra với các công cụ bạn yêu thích về kế hoạch sử dụng WebDriverBiDi.
  • Tham gia RFC, đưa ra ý kiến phản hồi về các API.

Câu hỏi thường gặp

WebDriver BiDi có thay thế Giao thức Chrome DevTools (CDP) không?

Không. Các trình duyệt dựa trên Chromium sẽ tiếp tục sử dụng CDP cho mục đích gỡ lỗi, trong khi WebDriver BiDi là thông số kỹ thuật mới để giải quyết nhu cầu kiểm thử bằng một API phù hợp hơn.

Vì Puppeteer đang sử dụng CDP, điều này có nghĩa là Puppeteer sẽ không được dùng nữa không?

Không. Tuy nhiên, WebDriver BiDi sẽ cho phép Puppeteer trở thành một công cụ tự động hoá trên nhiều trình duyệt.

Bạn có lộ trình công khai không?

Có, hãy truy cập vào lộ trình của chúng tôi trên GitHub.