Artikel ini memberikan ringkasan tentang hal-hal baru di WebDriver BiDi pada tahun 2023.
Apa yang dimaksud dengan WebDriver BiDi?
WebDriver adalah protokol otomatisasi browser, yang ditentukan sebagai standar W3C, dengan implementasi di ChromeDriver, GeckoDriver, dan WebKitDriver.
Chromium juga memiliki protokol otomatisasi browser sendiri: Chrome DevTools Protocol, atau CDP.
Ada beberapa perbedaan mendasar antara kedua protokol ini: WebDriver adalah standar yang dapat dioperasikan bersama, tetapi protokolnya kurang efisien dan tidak memiliki fitur yang dimiliki CDP. Sebaliknya, CDP lebih efisien dan canggih, tetapi kurang interoperabilitas.
Oleh karena itu, pada tahun 2020, Grup Kerja Pengujian dan Alat Browser W3C mulai mengerjakan WebDriver BiDi, protokol otomatisasi browser standar baru yang menjembatani kesenjangan antara protokol WebDriver Classic dan CDP. Terbaik dari keduanya! Baca Mengenang masa lalu: evolusi otomatisasi pengujian dan WebDriver BiDi — masa depan otomatisasi lintas browser untuk mengetahui latar belakang selengkapnya.
Upaya BiDi WebDriver melibatkan pekerjaan standardisasi, pembuatan Pengujian Platform Web, dan implementasi untuk berbagai mesin browser.
Di mana kita sekarang?
Pada tahun 2022, Chrome/ChromeDriver 106 dan Firefox 102 mengirimkan dukungan untuk standar BiDi WebDriver.
Sejak saat itu, WebDriver BiDi diadopsi dalam framework populer, dan mengatasi titik masalah utama developer dengan membuka fitur yang paling banyak diminta seperti dukungan logging.
Logging didukung oleh WebDriver BiDi
Kasus penggunaan yang umum adalah memverifikasi secara otomatis bahwa halaman web dimuat tanpa log konsol, peringatan, atau error, dan tanpa pengecualian JavaScript yang tidak tertangkap. Kasus penggunaan lainnya adalah Anda mungkin ingin menulis pengujian otomatis untuk memeriksa apakah halaman web mencatat peringatan atau menampilkan pengecualian jika diinginkan. Masalah ini tidak dapat diatasi menggunakan WebDriver Classic karena tidak bersifat dua arah. WebDriver BiDi kini memungkinkan hal ini.
Berikut adalah contoh implementasi kasus penggunaan kedua menggunakan binding bahasa JavaScript 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();
Berikut adalah contoh penggunaan dukungan WebDriver BiDi eksperimental 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();
Fungsi yang sama tersedia melalui abstraksi lain seperti WebdriverIO.
Roadmap publik bersama
Kami masih mengembangkan spesifikasi BiDi WebDriver melalui kolaborasi dengan vendor browser lain dan pemangku kepentingan industri yang berpartisipasi dalam Grup Kerja W3C. Grup ini baru-baru ini menyepakati roadmap bersama, yang menyelaraskan spesifikasi dan pekerjaan implementasi mendatang seputar kasus penggunaan menyeluruh yang jelas bagi pengguna.
Interoperabilitas
Saat Kelompok Kerja secara kolektif menentukan lebih banyak fitur, kami juga membuat Pengujian Platform Web untuk protokol BiDi WebDriver. Paket pengujian bersama ini membantu kami memverifikasi ketepatan dan interoperabilitas penerapan. Anda dapat melihat hasil pengujian terbaru untuk berbagai browser di Dasbor WPT.
Mendukung WebDriver BiDi: Bagaimana Anda dapat membantu?
Apakah Anda tertarik dengan masa depan otomatisasi browser dengan WebDriver BiDi? Berikut cara menunjukkan dukungan Anda:
- Jadilah penguji dan pengguna awal serta bantu membentuk masa depan WebDriver BiDi.
- Sebarkan beritanya. Bagikan project di media sosial menggunakan hashtag
#WebDriverBiDi
. - Minta dukungan. Ajukan permintaan fitur atau hubungi alat favorit Anda untuk mengetahui rencana mereka dalam mengadopsi WebDriver BiDi.
- Berpartisipasilah dalam diskusi spesifikasi.