Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

WebDriver BiDi-Module

Das WebDriver BiDi-Protokoll ist in Module gegliedert. Jedes Modul repräsentiert eine Sammlung von zusammenhängenden Befehlen und Ereignissen, die in spezifischen Automatisierungsfällen im Browser verwendet werden.

Sowohl Befehls- als auch Ereignisnamen verwenden den Modulnamen als Präfix: module_name.command_name für Befehle und module_name.event_name für Ereignisse.

Liste der Module

bluetooth-Modul

Das bluetooth-Modul enthält Befehle zur Automatisierung der Interaktionen mit Bluetooth-Geräten.

browser Modul

Das browser Modul enthält Befehle zur Verwaltung des Browsers.

browsingContext Modul

Das browsingContext-Modul enthält Befehle und Ereignisse zur Verwaltung von Browsing-Kontexten.

emulation-Modul

Das emulation-Modul enthält Befehle zum Überschreiben des Verhaltens bestimmter Web-APIs, wie der Geolocation API und der Screen Orientation API, um verschiedene Umgebungen zu simulieren.

input-Modul

Das input-Modul enthält Befehle zur Simulation von Benutzerinteraktionen.

log Modul

Das log Modul enthält Ereignisse im Zusammenhang mit der Protokollierung.

Modul userAgentClientHints

Das userAgentClientHints Modul enthält Befehle zum Überschreiben von User-Agent-Client-Hinweisen.

network Modul

Das network Modul enthält Befehle und Ereignisse im Zusammenhang mit Netzwerk-Anfragen.

permissions module

Das permissions-Modul enthält Befehle zur Verwaltung von Browserberechtigungen.

script-Modul

Das script-Modul enthält Befehle und Ereignisse zum Ausführen von JavaScript und zum Verwalten von Script-Bereichen im Browser.

session-Modul

Das session-Modul enthält Befehle zur Verwaltung des Lebenszyklus und der Ereignisabonnements einer WebDriver-BiDi-Sitzung.

storage-Modul

Das storage-Modul enthält Befehle und Ereignisse im Zusammenhang mit Speicher.

webExtension Modul

Das webExtension Modul enthält Befehle zur Verwaltung von Browser-Erweiterungen.

Befehle

Ein Befehl ist eine asynchrone Operation, die vom Client an den Browser gesendet wird. Jede Befehlsnachricht, die Sie an den Browser senden, enthält drei Felder:

  • id: Eine Zahl, die Sie dem Befehl zuweisen. Im Gegensatz zu HTTP, bei dem jede Anfrage auf eine Antwort wartet, kann eine WebSocket-Verbindung mehrere Befehle gleichzeitig bearbeiten, und Antworten können in beliebiger Reihenfolge eintreffen. Die id hilft Ihnen, jede Antwort dem Befehl zuzuordnen, der sie ausgelöst hat.
  • method: Der auszuführende Befehl im Format module_name.command_name.
  • params: Ein Objekt mit allen zusätzlichen Informationen, die der Befehl benötigt. Einige Befehle erfordern keine Parameter, aber ein leeres params-Objekt ({}) muss dennoch gesendet werden.

Zum Beispiel, um eine neue Sitzung zu erstellen, würden Sie den session.new-Befehl wie folgt senden:

json
{
  "id": 1,
  "method": "session.new",
  "params": {}
}

Jeder Befehl führt entweder zu einer erfolgreichen Antwort mit einem result-Feld oder zu einer Fehlerantwort mit einem error-Feld. Die Struktur von result ist spezifisch für jeden Befehl.

Alle Befehle außer session.new und session.status erfordern eine aktive WebDriver BiDi-Sitzung.

Ereignisse

Ein Ereignis ist eine Benachrichtigung, die vom Browser an den Client gesendet wird, wenn etwas von Interesse auftritt. Um Ereignisse zu empfangen, muss der Client sich zuerst mit dem Befehl session.subscribe anmelden.

Der Client kann sich entweder für ein spezifisches Ereignis oder für alle Ereignisse in einem Modul anmelden. Zum Beispiel, durch die Anmeldung bei "browsingContext.contextCreated" wird der Client für dieses einzelne Ereignis angemeldet, während die Anmeldung bei "browsingContext" den Client für jedes Ereignis im Modul browsingContext anmeldet.

Folgendes ist eine Beispielnachricht, die vom Browser gesendet wird, wenn der Client bei log.entryAdded angemeldet ist und eine Konsolennachricht geloggt wird (einige Felder wurden der Kürze halber ausgelassen):

json
{
  "type": "event",
  "method": "log.entryAdded",
  "params": {
    "type": "console",
    "method": "log",
    "realm": null,
    "level": "info",
    "text": "Hello world",
    "timestamp": 1657282076037
  }
}

Browser-Kompatibilität