Produktionsfertiger WebDriver BiDi in Firefox, Chrome und Puppeteer

Matthias Rohmer
Matthias Rohmer

Erst letzte Woche haben wir zusammen mit BrowserStack angekündigt, dass WebDriver BiDi produktionsreif in BrowserStack. Diese Woche geht der Sommer von WebDriver BiDi mit Firefox 129 und Puppeteer 23 erhalten produktionsreife Unterstützung für WebDriver BiDi!

Mozilla arbeitet seit über vier Jahren stark an WebDriver BiDi mit anfangs an der Gestaltung des neuen Standards mitgewirkt und dann nach und nach in Firefox hochladen und den Fortschritt im Firefox WebDriver Newsletter übersichtlich dokumentieren.

Mit WebDriver BiDi in Firefox, Puppeteer ab Version 23 produktionsreif, bietet stabile Unterstützung für Firefox über WebDriver BiDi. Auf diese Weise können Sie Firefox mit demselben prägnanten API wie Chrome. Puppeteer-Support für Chrome Das Entwicklertools-Protokoll (CDP) bleibt unverändert.

Firefox, CDP und Puppeteer

Puppeteer ist ein zuverlässiges Tool für Entwickler zur Automatisierung von Chromium-basierten Browsern mit dem Chrome-Browser DevTools-Protokoll, auch als CDP bezeichnet. 2019 erhielt Puppeteer experimentelle Unterstützung für Firefox.

Um dies zu erreichen, implementierte und gepflegt Mozilla einen Teil des CDP in Firefox Diese Lösung ermöglichte Firefox mit der Puppeteer-API, gab es Vorbehalte:

  • Wie der Name schon sagt, wird die CDP von den Chrome-Entwicklertools verwendet und muss geändert werden, Entwicklertools-Anforderungen erfüllt.
  • Die CDP ist nicht in einer gemeinsamen, öffentlichen Spezifikation standardisiert. Die Pflege in Firefox erforderte eine kontinuierliche Kommunikation und zu konzentrieren.
  • Da Firefox nur einen Teil des CDP implementierte, konnte Puppeteer garantieren, dass das gesamte API mit Firefox funktioniert, was für Verwirrung bei den Nutzern sorgt.

Wir sind froh, dass wir diese Unterstützung gemeinsam mit Mozilla für die wussten wir immer, dass das keine dauerhafte Lösung ist. Darauf aufbauend einschließlich anderer großer Browser- und Toolanbieter, haben wir WebDriver BiDi erstellt.

Teamarbeit macht den Traum

Das Firefox-Team hat hart daran gearbeitet, WebDriver BiDi in Firefox zu implementieren. Gleichzeitig hat das Puppeteer-Team die Unterstützung von WebDriver BiDi erweitert. in der Puppeteer API. Das Ziel, auf das beide Teams hinarbeiteten, alle APIs, die für Anwendungsfälle der Produktionsautomatisierung erforderlich sind, zu machen mit WebDriver BiDi in Puppeteer verfügbar, um Unterstützung in Chrome und Firefox

Gemeinsames Team-Dashboard mit der Anzahl der bestandenen Tests in den letzten Monaten.
Gemeinsames Team-Dashboard mit der Anzahl der bestandenen Tests in den letzten Monaten.

So können Puppeteer-Nutzer entweder Firefox oder Chrome für ihre Automatisierungen auswählen, Durch Angabe des Konfigurationsschlüssels browser beim Starten von Puppeteer Instanz.

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

Wenn Sie mehr über die Neuerungen in Firefox 129 und die Arbeit von Mozilla für WebDriver erfahren möchten, BiDi finden Sie im zugehörigen Mozilla Hacks-Blogpost.

KDP-Unterstützung in der Zukunft

Das obige Code-Snippet zeigt, wie Chrome mithilfe von WebDriver BiDi mit Puppeteer müssen Sie protocol explizit festlegen auf webDriverBiDi. Das liegt daran, dass Puppeteer für Chrome CDP – um bestehende Automatisierungen nicht zu überwinden, sondern Automatisierungen weiterhin zu unterstützen auf die Funktionen von Chrome.

Die CDP-Unterstützung in Firefox wurde von Firefox 129 eingestellt und die Ende 2024 entfernt werden soll. Wenn Sie bereits Automatisierungen haben, die auf der CDP-Unterstützung in Firefox basieren, empfehlen die Migration zu WebDriver BiDi. Sollte dies nicht möglich sein, wenden Sie sich an dev-webdriver@mozilla.org mit Ihrem Anwendungsfall.