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 roku grupa W3C Browser Testing and Tools robocza 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 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ądarki.
Gdzie jesteśmy?
W 2022 r. zarówno Chrome/ChromeDriver 106, jak i Firefox 102 obsługują standard WebDriver BiDi.
Od tego czasu platforma WebDriver BiDi zaczęła korzystać z popularnych platform, rozwiązując największe problemy programistów, udostępniając często poszukiwane funkcje, takie jak pomoc dotycząca logowania.
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 nieprzechwycionych 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 eksperymentalnej obsługi WebDriver BiDi przeprowadzonej przez firmę 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.
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 wspólnie określa więcej funkcji, tworzymy również 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.
Wspieranie WebDriver BiDi: jak możesz pomóc?
Czy interesuje Cię przyszłość automatyzacji przeglądarki z użyciem WebDriver BiDi? Aby okazać wsparcie:
- Zostań testerem i użytkownikiem wczesnej wersji i pomóż kształtować przyszłość WebDriver BiDi.
- Daj znać innym! Udostępnij projekt w mediach społecznościowych, używając hashtagu
#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.