WebDriver BiDi – Die Zukunft der browserübergreifenden Automatisierung

In unserem vorherigen Artikel haben wir die bestehenden Automatisierungsprotokolle, nämlich WebDriver „Classic“ und Chrome DevTools Protocol (CDP), sowie ihre jeweiligen Vorteile und Einschränkungen untersucht.

WebDriver BiDi ist die Zukunft der Browserautomatisierung. Es ist ein neues Standardprotokoll für die Browserautomatisierung, das derzeit in der Entwicklung ist und das Beste aus WebDriver „Classic“ und CDP kombinieren soll. WebDriver BiDi bietet eine bidirektionale Kommunikation, was es standardmäßig schnell macht. Außerdem bietet es eine umfassende Low-Level-Steuerung.

WebDriver BiDi
WebDriver „Classic“ Chrome DevTools Protocol (CDP)
Beste plattformübergreifende Unterstützung Schnelle, bidirektionale Nachrichtenübermittlung
W3C-Standard Bietet eine detaillierte Steuerung
Für Tests konzipiert

WebDriver BiDi soll es Ihnen ermöglichen, Tests mit Ihren bevorzugten Tools zu schreiben und in jedem Browser oder Treiber zu automatisieren. So haben Sie volle Flexibilität.

Die Vision hinter WebDriver BiDi
Die Vision hinter WebDriver BiDi

Standardisierung

Die WebDriver BiDi Working Group besteht aus einer vielfältigen Gruppe von Browseranbietern, Open-Source-Browserautomatisierungsprojekten und Unternehmen, die Lösungen für die Browserautomatisierung anbieten. Diese Zusammenarbeit sorgt für eine vielversprechende Zukunft der Browserautomatisierung.

Die WebDriver BiDi-Arbeitsgruppe
Die WebDriver-BiDi-Arbeitsgruppe

Die Arbeit wird hauptsächlich in diesem GitHub-Repository ausgeführt. Es finden monatliche Treffen mit allen großen Browseranbietern statt, bei denen aktuelle Fortschritte gemeldet und fragliche und unbekannte Details besprochen werden. Die unternehmensübergreifende Arbeitsgruppe sorgt dafür, dass Entscheidungen mit allen Stakeholdern abgestimmt sind.

Die Einrichtung und Implementierung eines neuen Protokolls ist keine leichte Aufgabe. Es erfordert gemeinsame Anstrengungen verschiedener Anbieter, die zusammenarbeiten. Dazu gehören:

  • Spezifikation: Ein RFC-Prozess (Request for Comments), um Feedback zum Vorschlag einzuholen.
  • Überprüfung: Eine Reihe von Tests, die plattformübergreifend ausgeführt werden können und als „Source of Truth“ für alle Implementierungen dienen.
  • Implementierung: Browser implementieren die Protokolle gemäß der Spezifikation und bestehen die Überprüfungstests.

Herausforderungen

In diesem Abschnitt gehen wir auf die Herausforderungen bei der Implementierung von WebDriver BiDi ein, da es darum geht, ein Gleichgewicht zwischen Kompatibilität, Nutzerfreundlichkeit und Implementierbarkeit zu finden.

Mehr als ein CDP-Klon: Browserübergreifende Kompatibilität

CDP mit seinen Chrome- und DevTools-spezifischen Elementen kann nicht direkt in der WebDriver-BiDi-Spezifikation repliziert werden. Die Implementierung von CDP in der vorliegenden Form wäre für andere Browser nicht realisierbar, was eine Spezifikation, die lediglich beschreibt, wie dies zu tun ist, sinnlos macht.

Niedrige Latenz sicherstellen

WebDriver BiDi muss so konzipiert sein, dass es mit hoher Latenz umgehen kann, ohne die Leistung zu beeinträchtigen. Bei CDP ist die Latenz niedrig, da Client und Server fast immer auf demselben physischen Computer ausgeführt werden. Das ist bei WebDriver BiDi nicht der Fall. Daher muss WebDriver BiDi die Anzahl der erforderlichen Umläufe zwischen Client und Server minimieren.

Ergonomie bei BiDi priorisieren

Entwickler müssen zwar keine WebDriver-BiDi-Clients von Grund auf neu erstellen, aber es ist wichtig, das Protokoll nicht zu kompliziert zu gestalten. Ein zu komplexer BiDi-Code ist nicht nur schwierig zu implementieren, sondern auch schwer zu bearbeiten, was die Akzeptanz und Nutzung erschwert.

Bidirektionale Ausrichtung implementieren

WebDriver BiDi muss realistisch implementierbar sein, wobei die Einschränkungen verschiedener Browser berücksichtigt werden. Wenn beispielsweise alle JavaScript-Objekte beibehalten werden, die BiDi-Clients jemals zur Verfügung gestellt wurden, kann dies zu Speicherlecks führen. Wenn keine beibehalten werden, wird die Fehlerbehebung und Interaktion mit dem JavaScript einer Seite erschwert. Es ist wichtig, eine Balance zu finden, die eine effektive Browserautomatisierung ermöglicht, ohne die Leistung zu beeinträchtigen.

Herausforderungen meistern

In diesem Abschnitt werden die Strategien beschrieben, mit denen die Herausforderungen bei der Implementierung von WebDriver BiDi angegangen wurden.

Schnelles Prototyping

Die Herausforderung der Implementierung zu meistern, ist entscheidend für den Erfolg von BiDi. Um den Fortschritt bei der Spezifikation und den Tests zu beschleunigen, haben wir einen Ansatz für das schnelle Prototyping mit NodeJS verwendet. So können wir nicht nur mit verschiedenen Lösungen experimentieren, sondern auch die Entwicklung von Webplattformtests erleichtern.

Design mit Blick auf die Leistung

Diese Designentscheidung ist von der Leistung abhängig, da die Latenz bei WebDriver BiDi in einigen Fällen hoch ist. Wenn beispielsweise eine Objekt-ID und ein Wert aus dem Browser abgerufen werden, ist für WebDriver BiDi nur ein Roundtrip erforderlich, während CDP zwei benötigt. Das liegt daran, dass WebDriver BiDi sowohl die ID als auch den Wert in einer einzigen Antwort zurückgeben kann (das Ergebnis sollte nicht JSON-serialisierbar sein), während CDP sie separat zurückgeben muss.

Schwerpunkt auf Web Platform Tests (WPT)

Webplattformtests spielen bei BiDi eine wichtige Rolle. WPT deckt derzeit WebDriver „Classic“ und WebDriver BiDi ab und dient als zuverlässige Referenz für alle Implementierungen. Diese Tests sind so konzipiert, dass sie in verschiedenen Implementierungen ausgeführt und bestanden werden können. So wird eine einheitliche plattformübergreifende Protokollausführung sichergestellt, was für den Erfolg von WebDriver BiDi entscheidend ist. Das aktuelle WPT-Ergebnis finden Sie im Dashboard.

Wie sieht der Plan aus und wie weit sind Sie?

Sehen Sie sich die WebDriver BiDi-Roadmap an, um mehr über die Ausrichtung des Projekts zu erfahren. Die Roadmap ist noch in der Entwicklung und wird ständig aktualisiert.

Den Implementierungsstatus für alle Browser finden Sie in den aktuellen Webplattformtests, die als „Source of Truth“ dienen.

Behalten Sie die Projektmeilensteine im Auge, um den Fortschritt zu verfolgen.

Hier findest du die Erfolge von 2023 und kannst dich über die neuesten Entwicklungen informieren.

WebDriver BiDi unterstützen: So können Sie helfen

Sind Sie gespannt auf die Zukunft der Browserautomatisierung mit WebDriver BiDi? So kannst du deine Unterstützung zeigen:

  • Seien Sie ein früher Tester und Anwender und helfen Sie mit, die Zukunft von WebDriver BiDi zu gestalten.
  • Weitersagen: Teilen Sie das Projekt in den sozialen Medien mit dem Hashtag #WebDriverBiDi.
  • Wende dich an den Support. Reichen Sie einen Funktionsantrag ein oder erkundigen Sie sich bei Ihren bevorzugten Tools, ob sie WebDriverBiDi unterstützen werden.
  • Nehmen Sie am RFC teil und geben Sie Feedback zu den APIs.

Häufige Fragen

Wird WebDriver BiDi das Chrome DevTools Protocol (CDP) ersetzen?

Nein. Chromium-basierte Browser verwenden weiterhin CDP zu Debugging-Zwecken. WebDriver BiDi ist die neue Spezifikation, die die Testanforderungen mit einer ergonomischeren API erfüllt.

Da Puppeteer CDP verwendet, wird es eingestellt?

Nein. Mit WebDriver BiDi wird Puppeteer jedoch zu einem browserübergreifenden Automatisierungstool.

Haben Sie eine öffentliche Roadmap?

Ja, in unserer GitHub.