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
browserModul 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
logModul enthält Ereignisse im Zusammenhang mit der Protokollierung.- Modul userAgentClientHints
Das
userAgentClientHintsModul enthält Befehle zum Überschreiben von User-Agent-Client-Hinweisen.- network Modul
Das
networkModul 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
webExtensionModul 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. Dieidhilft Ihnen, jede Antwort dem Befehl zuzuordnen, der sie ausgelöst hat.method: Der auszuführende Befehl im Formatmodule_name.command_name.params: Ein Objekt mit allen zusätzlichen Informationen, die der Befehl benötigt. Einige Befehle erfordern keine Parameter, aber ein leeresparams-Objekt ({}) muss dennoch gesendet werden.
Zum Beispiel, um eine neue Sitzung zu erstellen, würden Sie den session.new-Befehl wie folgt senden:
{
"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):
{
"type": "event",
"method": "log.entryAdded",
"params": {
"type": "console",
"method": "log",
"realm": null,
"level": "info",
"text": "Hello world",
"timestamp": 1657282076037
}
}