Bài viết này cung cấp thông tin tổng quan về các tính năng mới trong WebDriver BiDi năm 2023.
WebDriver BiDi là gì?
WebDriver là một giao thức tự động hoá trình duyệt, được xác định là một tiêu chuẩn W3C, với các phương thức triển khai trong ChromeDriver, GeckoDriver và WebKitDriver.
Chromium cũng có giao thức tự động hoá trình duyệt độc quyền riêng: Giao thức Chrome DevTools (hoặc CDP).
Có một số điểm khác biệt cơ bản giữa hai giao thức này: WebDriver là một tiêu chuẩn có khả năng tương tác, nhưng giao thức này kém hiệu quả hơn và thiếu các tính năng mà CDP có. Ngược lại, CDP hiệu quả và mạnh mẽ hơn, nhưng khả năng tương tác kém hơn.
Đó là lý do tại sao vào năm 2020, Nhóm công tác về công cụ và kiểm thử trình duyệt của W3C bắt đầu làm việc trên WebDriver BiDi, một giao thức tự động hoá trình duyệt tiêu chuẩn mới giúp thu hẹp khoảng cách giữa giao thức WebDriver Classic và CDP. Kết hợp cả hai ưu điểm! Đọc bài viết Nhìn lại quá khứ: quá trình phát triển của tính năng tự động hoá kiểm thử và WebDriver BiDi — tương lai của tính năng tự động hoá trên nhiều trình duyệt để biết thêm thông tin cơ bản.
Nỗ lực WebDriver BiDi bao gồm công việc chuẩn hoá, tạo Kiểm thử nền tảng web và triển khai cho nhiều công cụ trình duyệt.
Chúng ta đang ở đâu?
Trong năm 2022, cả Chrome/ChromeDriver 106 và Firefox 102 đều hỗ trợ tiêu chuẩn WebDriver BiDi.
Kể từ đó, WebDriver BiDi đã được áp dụng trong các khung phổ biến, giải quyết các vấn đề hàng đầu của nhà phát triển bằng cách mở khoá các tính năng được yêu cầu nhiều như hỗ trợ ghi nhật ký.
Tính năng ghi nhật ký do WebDriver BiDi cung cấp
Một trường hợp sử dụng phổ biến là tự động xác minh rằng một trang web tải mà không có nhật ký bảng điều khiển, cảnh báo hoặc lỗi nào và không có ngoại lệ JavaScript nào chưa được phát hiện. Một trường hợp sử dụng khác là bạn có thể muốn viết một chương trình kiểm thử tự động để kiểm tra xem một trang web có ghi lại cảnh báo hoặc gửi một ngoại lệ khi dự định hay không. Bạn không thể giải quyết những vấn đề này bằng WebDriver Classic vì WebDriver Classic không có tính hai chiều. WebDriver BiDi hiện đã hỗ trợ việc này.
Dưới đây là ví dụ về cách triển khai trường hợp sử dụng thứ hai bằng cách sử dụng các liên kết ngôn ngữ JavaScript của Selenium:
import * as assert from 'node:assert';
import { Builder, LogInspector } from 'selenium-webdriver';
import chrome from 'selenium-webdriver/chrome.js';
const driver = new Builder()
.forBrowser('chrome')
.setChromeOptions(new chrome.Options().enableBidi())
.build();
const inspector = await LogInspector(driver);
await inspector.onConsoleEntry((entry) => {
console.log(`Console message received: [${
entry.type}][${entry.level}] ${entry.text}`);
});
await driver.get('https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html');
await driver.findElement({ id: 'consoleLog' }).click();
await driver.quit();
Sau đây là ví dụ về cách sử dụng tính năng hỗ trợ WebDriver BiDi thử nghiệm của Puppeteer:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({
protocol: 'webDriverBiDi',
headless: 'new',
});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
page.on('console', (message) => {
console.log(`Console message received: [${
message.type()
}] ${message.text()}`);
});
await page.goto(`https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html`);
await page.evaluate(() => {
document.querySelector('#consoleLog').click();
});
await browser.close();
Bạn cũng có thể sử dụng chức năng tương tự thông qua các lớp trừu tượng khác như WebdriverIO.
Lộ trình công khai dùng chung
Chúng tôi vẫn đang hoàn thiện thông số kỹ thuật WebDriver BiDi bằng cách cộng tác với các nhà cung cấp trình duyệt khác và các bên liên quan trong ngành tham gia Nhóm làm việc W3C. Gần đây, nhóm đã đồng ý về một lộ trình chung, điều chỉnh thông số kỹ thuật sắp tới và công việc triển khai xung quanh các trường hợp sử dụng toàn diện, rõ ràng dành cho người dùng.
Khả năng tương tác
Khi Nhóm làm việc cùng nhau chỉ định thêm các tính năng, chúng ta cũng tạo Kiểm thử nền tảng web cho giao thức WebDriver BiDi. Bộ kiểm thử dùng chung này giúp chúng tôi xác minh tính chính xác và khả năng tương tác của các hoạt động triển khai. Bạn có thể xem kết quả kiểm thử mới nhất cho nhiều trình duyệt trên Trang tổng quan WPT.
Hỗ trợ WebDriver BiDi: Bạn có thể giúp gì?
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ộ của mình:
- 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 tin 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 WebDriver BiDi.
- Tham gia các cuộc thảo luận về thông số kỹ thuật.