W tym artykule znajdziesz omówienie nowości w WebDriver BiDi w 2023 roku.
Co to jest WebDriver BiDi?
WebDriver to protokół automatyzacji przeglądarki zdefiniowany jako standard W3C, z implementacjami w ChromeDriver, GeckoDriver i WebKitDriver.
Chromium ma też własny zastrzeżony protokół automatyzacji przeglądarki: Chrome DevTools Protocol (CDP).
Te 2 protokoły różni kilka podstawowych kwestii: WebDriver jest standardem interoperacyjności, ale jest mniej wydajny i nie ma niektórych funkcji CDP. Platforma CDP jest natomiast bardziej wydajna i zaawansowana, ale mniej interoperacyjna.
Dlatego w 2020 r. grupa robocza W3C ds. testowania przeglądarek i narzędzi rozpoczęła pracę nad WebDriver BiDi, nowym standardowym protokołem automatyzacji przeglądarki, który wypełnia lukę między protokołami WebDriver Classic i CDP. Połączenie zalet obu formatów Aby dowiedzieć się więcej, przeczytaj artykuły Wspomnienia z czasów przeszłości: ewolucja automatyzacji testów i WebDriver BiDi – przyszłość automatyzacji w różnych przeglądarkach.
Projekt WebDriver BiDi obejmuje standaryzację, tworzenie testów platformy internetowej i implementacje dla różnych silników przeglądarek.
Gdzie jesteśmy?
W 2022 r. zarówno Chrome/ChromeDriver 106, jak i Firefox 102 obsługują standard WebDriver BiDi.
Od tego czasu WebDriver BiDi jest używany w popularnych frameworkach, rozwiązując najważniejsze problemy deweloperów dzięki udostępnieniu bardzo pożądanych funkcji, takich jak obsługa rejestrowania.
Rejestrowanie za pomocą WebDriver BiDi
Typowym zastosowaniem jest automatyczne sprawdzanie, czy strona wczytuje się bez błędów w konsoli, ostrzeżeń i logów oraz bez nieprzechwyconych wyjątków JavaScript. Innym przypadkiem użycia jest napisanie testu automatycznego, który sprawdza, czy strona internetowa rejestruje ostrzeżenie lub wyrzuca wyjątek w odpowiedni sposób. Tych problemów nie można rozwiązać za pomocą WebDriver Classic, ponieważ nie jest on dwukierunkowy. Umożliwia to teraz WebDriver BiDi.
Oto przykład implementacji drugiego przypadku użycia za pomocą powiązań języka 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 użycia eksperymentalnej obsługi BiDi w Puppeteer WebDriver:
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();
Te same funkcje są dostępne za pomocą innych abstrakcji, takich jak WebdriverIO.
Udostępniony publicznie plan działania
Wciąż pracujemy nad specyfikacją WebDriver BiDi we współpracy z innymi dostawcami przeglądarek i osobami z branży, które uczestniczą w grupie roboczej W3C. Grupa uzgodniła niedawno wspólny plan rozwoju, który dopasowuje nadchodzące prace nad specyfikacją i wdrażaniem do przejrzystych przypadków użycia obejmujących cały cykl życia.
Interoperacyjność
Ponieważ grupa robocza określa coraz więcej funkcji, tworzymy też testy platformy internetowej dla protokołu WebDriver BiDi. Ten wspólny zestaw testów pomaga nam sprawdzać poprawność i interoperacyjność implementacji. Najnowsze wyniki testów różnych przeglądarek możesz wyświetlić w panelu WPT.
Wsparcie dla WebDriver BiDi: jak możesz pomóc?
Czy interesuje Cię przyszłość automatyzacji przeglądarki z użyciem WebDriver BiDi? Oto jak możesz pokazać swoje wsparcie:
- Weź udział w testowaniu i wprowadzaniu tej funkcji, aby pomóc kształtować przyszłość WebDriver BiDi.
- Daj znać innym! Udostępnij projekt w mediach społecznościowych, używając hashtaga
#WebDriverBiDi
. - Poproś o pomoc. Prześlij prośbę o dodanie funkcji lub sprawdź, czy Twoje ulubione narzędzia planują wdrożenie WebDriver BiDi.
- Uczestnicz w dyskusjach na temat specyfikacji.