WebDriver BiDi: aktualizacja stanu z 2023 r.

W tym artykule znajdziesz omówienie nowości w usłudze WebDriver BiDi w 2023 r.

Co to jest WebDriver BiDi?

WebDriver to protokół automatyzacji przeglądarki, zdefiniowany jako standard W3C, stosowany w rozwiązaniach ChromeDriver, GeckoDriver i WebKitDriver.

Chromium ma też własny zastrzeżony protokół automatyzacji przeglądarki: Chrome DevTools Protocol, czyli CDP.

Istnieją pewne zasadnicze różnice między tymi dwoma protokołami: WebDriver jest standardem interoperacyjnym, ale jest mniej wydajny i brakuje funkcji CDP. Natomiast CDP jest wydajniejszy i bardziej wydajny, ale mniej interoperacyjności.

Dlatego w 2020 roku grupa W3C Browser Testing and Tools godziny rozpoczęła prace nad WebDriver BiDi, nowym standardowym protokołem automatyzacji przeglądarek, który wypełnia lukę między protokołami WebDriver Classic i CDP. Połączenie zalet obu formatów. Więcej informacji znajdziesz w artykułach Spojrzenie w przeszłość: ewolucja automatyzacji testów oraz WebDriver BiDi – przyszłość automatyzacji w różnych przeglądarkach.

Wysiłki w ramach funkcji WebDriver BiDi obejmują prace nad standaryzacją, stworzenie testów platformy internetowej oraz wdrożenia dla różnych silników przeglądarek.

Co teraz?

W 2022 roku zarówno Chrome/ChromeDriver 106, jak i Firefox 102, obsługiwały standard WebDriver BiDi.

Od tego czasu funkcja WebDriver BiDi została przyjęta na popularne platformy, rozwiązując główne problemy deweloperów przez udostępnienie bardzo oczekiwanych funkcji, takich jak obsługa rejestrowania.

Logowanie obsługiwane przez WebDriver BiDi

Typowym przypadkiem użycia jest automatyczne sprawdzanie, czy strona wczytuje się bez dzienników konsoli, ostrzeżeń czy błędów i bez niewykrytych wyjątków JavaScript. Inny przypadek użycia: możesz napisać automatyczny test sprawdzający, czy strona internetowa rejestruje ostrzeżenie lub robi wyjątek. Tych problemów nie można rozwiązać za pomocą systemu WebDriver Classic, ponieważ nie jest on dwukierunkowy. Teraz jest to możliwe dzięki usłudze WebDriver BiDi.

Oto przykład implementacji drugiego przypadku użycia z wykorzystaniem powiązań języków JavaScript w 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();

Oto przykład z eksperymentalną obsługą WebDriver BiDi w 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();

Ta sama funkcja jest dostępna w innych abstrakcjach, takich jak WebdriverIO.

Wspólny plan rozwoju publicznego

Nadal dopracowujemy specyfikację WebDriver BiDi we współpracy z innymi dostawcami przeglądarek i zainteresowanymi osobami z branży, które należą do grupy roboczej W3C. Grupa niedawno uzgodniła wspólny plan działania, w którym ustalono planowane zmiany w przyszłej specyfikacji i obecni w implementacji, by zapewnić użytkownikom wgląd w kompleksowe przypadki użycia.

Interoperacyjność

Ponieważ grupa robocza określa więcej funkcji, tworzymy również testy platformy sieciowej dla protokołu WebDriver BiDi. Ten wspólny pakiet testowy pomaga nam sprawdzać prawidłowość i interoperacyjność implementacji. Najnowsze wyniki testów w różnych przeglądarkach możesz wyświetlić w panelu WPT.

Wsparcie dla WebDriver BiDi: jak możesz pomóc?

Czy nie możesz się doczekać przyszłości automatyzacji przeglądarek dzięki funkcji WebDriver BiDi? Oto jak możesz okazać swoje wsparcie:

  • Zostań wczesnym testerem i użytkownikiem i pomóż kształtować przyszłość WebDriver BiDi.
  • Daj znać innym! Udostępnij projekt w mediach społecznościowych, korzystając z hashtagu #WebDriverBiDi.
  • Poproś o pomoc. Zgłoś prośbę o dodanie funkcji lub sprawdź za pomocą swoich ulubionych narzędzi plany wdrożenia funkcji WebDriver BiDi.
  • Weź udział w dyskusjach na temat specyfikacji.