In diesem Artikel erhalten Sie einen Überblick über die Neuigkeiten bei WebDriver BiDi im Jahr 2023.
Was ist WebDriver BiDi?
WebDriver ist ein Browser-Automatisierungsprotokoll, das als W3C-Standard definiert ist und in ChromeDriver, GeckoDriver und WebKitDriver implementiert ist.
Chromium hat auch ein eigenes Browser-Automatisierungsprotokoll: das Chrome DevTools Protocol (CDP).
Es gibt einige grundlegende Unterschiede zwischen diesen beiden Protokollen: WebDriver ist ein interoperabler Standard, aber das Protokoll ist weniger effizient und es fehlen Funktionen, die CDP bietet. Im Gegensatz dazu ist CDP effizienter und leistungsfähiger, aber weniger interoperabel.
Aus diesem Grund hat die W3C Browser Testing and Tools Working Group 2020 mit der Arbeit an WebDriver BiDi begonnen, einem neuen Standardprotokoll für die Browserautomatisierung, das die Lücke zwischen den WebDriver Classic- und CDP-Protokollen schließt. Das Beste aus beiden Welten! Weitere Informationen finden Sie unter Rückblick: Die Entwicklung der Testautomatisierung und WebDriver BiDi – die Zukunft der browserübergreifenden Automatisierung.
Die BiDi-Unterstützung von WebDriver umfasst Standardisierungsarbeiten, die Erstellung von Webplattformtests und Implementierungen für verschiedene Browser-Engines.
Wo stehen wir jetzt?
2022 wurde sowohl in Chrome/ChromeDriver 106 als auch in Firefox 102 der WebDriver-BiDi-Standard unterstützt.
Seitdem wurde WebDriver BiDi in beliebten Frameworks eingeführt. So konnten die größten Probleme von Entwicklern behoben werden, indem häufig angeforderte Funktionen wie die Protokollierungsunterstützung freigeschaltet wurden.
Logging mit WebDriver BiDi
Ein häufiger Anwendungsfall ist die automatische Überprüfung, ob eine Webseite ohne Console-Protokolle, Warnungen oder Fehler und ohne nicht abgefangene JavaScript-Ausnahmen geladen wird. Ein weiterer Anwendungsfall ist, dass Sie einen automatisierten Test schreiben möchten, um zu prüfen, ob auf einer Webseite wie vorgesehen eine Warnung protokolliert oder eine Ausnahme ausgelöst wird. Diese Probleme können nicht mit WebDriver Classic gelöst werden, da es nicht bidirektional ist. WebDriver BiDi macht das jetzt möglich.
Hier ist eine Beispielimplementierung des zweiten Anwendungsfalls mit den JavaScript-Sprachbindungen von 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();
Hier ein Beispiel für die Verwendung der experimentellen BiDi-Unterstützung von WebDriver in 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();
Dieselben Funktionen sind auch über andere Abstraktionsschichten wie WebdriverIO verfügbar.
Eine freigegebene öffentliche Roadmap
Wir arbeiten derzeit in Zusammenarbeit mit anderen Browseranbietern und Branchenakteuren, die an der W3C-Arbeitsgruppe teilnehmen, an der WebDriver-BiDi-Spezifikation. Die Gruppe hat sich vor Kurzem auf eine gemeinsame Roadmap geeinigt, um die anstehenden Spezifikations- und Implementierungsarbeiten auf klare End-to-End-Nutzungsfälle auszurichten.
Interoperabilität
Da die Arbeitsgruppe insgesamt mehr Funktionen angibt, erstellen wir außerdem Webplattform-Tests für das WebDriver BiDi-Protokoll. Diese gemeinsame Testsuite hilft uns, die Richtigkeit und Interoperabilität von Implementierungen zu überprüfen. Die neuesten Testergebnisse für verschiedene Browser finden Sie im WPT-Dashboard.
Unterstützung für WebDriver BiDi: Wie können Sie helfen?
Freuen Sie sich auf die Zukunft der Browserautomatisierung mit WebDriver BiDi? So kannst du deine Unterstützung zeigen:
- Seien Sie einer der ersten Tester und Nutzer und gestalten Sie die Zukunft von WebDriver BiDi mit.
- Weitersagen! Teile das Projekt in den sozialen Medien mit dem Hashtag
#WebDriverBiDi
. - Wenden Sie sich an den Support. Reichen Sie eine Funktionsanfrage ein oder erkundigen Sie sich bei Ihren bevorzugten Tools nach ihren Plänen für die Einführung von WebDriver BiDi.
- Beteiligen Sie sich an den Diskussionen zu den Spezifikationen.