WebDriver BiDi: Update status 2023

Artikel ini memberikan ringkasan tentang yang baru di WebDriver BiDi pada tahun 2023.

Apa itu WebDriver BiDi?

WebDriver adalah protokol otomatisasi browser, yang didefinisikan sebagai standar W3C, dengan implementasi di ChromeDriver, GeckoDriver, dan WebKitDriver.

Chromium juga memiliki protokol otomatisasi browser eksklusif: Chrome DevTools Protocol, atau CDP.

Ada beberapa perbedaan mendasar antara kedua protokol ini: WebDriver adalah standar yang memiliki interoperabilitas, tetapi protokol tersebut kurang efisien dan tidak memiliki fitur yang dimiliki CDP. Sebaliknya, CDP lebih efisien dan canggih, tetapi kurang memiliki kemampuan interoperabilitas.

Oleh karena itu, pada tahun 2020, W3C Browser Testing and Tools Working Group mulai mengerjakan WebDriver BiDi, protokol otomatisasi browser standar baru yang menjembatani kesenjangan antara protokol WebDriver Classic dan CDP. Terbaik dari keduanya! Baca Melihat ke 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 banyak diadopsi dalam framework populer, dan mengatasi masalah utama developer dengan memanfaatkan 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 apa pun 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 diselesaikan menggunakan WebDriver Klasik karena tidak bersifat dua arah. WebDriver BiDi sekarang memungkinkan hal itu.

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 BiDi WebDriver 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 menyempurnakan spesifikasi WebDriver BiDi bekerja sama dengan vendor browser dan pemangku kepentingan industri lainnya yang berpartisipasi dalam W3C Working Group. Grup ini baru-baru ini menyetujui roadmap bersama, yang menyelaraskan spesifikasi dan pekerjaan implementasi mendatang seputar kasus penggunaan menyeluruh yang jelas yang dihadapi pengguna.

Interoperabilitas

Karena Working Group secara kolektif menentukan lebih banyak fitur, kami juga membuat Web Platform Tests 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 ini 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 tanyakan kepada alat favorit Anda tentang rencana mereka untuk mengadopsi WebDriver BiDi.
  • Berpartisipasi dalam diskusi spesifikasi.