WebDriver BiDi-Module
Das WebDriver BiDi-Protokoll ist in Module organisiert. Jedes Modul stellt eine Sammlung von verwandten Befehlen und Ereignissen dar, die in spezifischen Browser-Automatisierungsfällen 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 von Interaktionen mit Bluetooth-Geräten.- browser-Modul
Das
browser-Modul enthält Befehle zur Verwaltung des Browsers, einschließlich Client-Fenstern, Benutzerkontexten und Download-Verhalten.- 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 bietet ein Ereignis zur Überwachung von Browser-Protokolleinträgen, einschließlich der Ausgabe der console API und unbehandelter JavaScript-Fehler.- 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.- userAgentClientHints Modul
Das
userAgentClientHintsModul enthält Befehle zum Überschreiben von User-Agent-Client-Hinweisen.- 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 von Ihnen gesendete Befehlsnachricht an den Browser hat drei Felder:
id: Eine von Ihnen dem Befehl zugewiesene Nummer. Anders als bei HTTP, wo jede Anfrage auf eine Antwort wartet, kann eine WebSocket-Verbindung gleichzeitig mehrere Befehle im Umlauf haben und Antworten können in unterschiedlicher Reihenfolge eintreffen. Dieidermöglicht es Ihnen, jede Antwort dem auslösenden Befehl zuzuordnen.method: Der auszuführende Befehl im Formatmodule_name.command_name.params: Ein Objekt mit zusätzlichen Informationen, die der Befehl benötigt. Einige Befehle erfordern keine Parameter, aber ein leeresparams-Objekt ({}) muss dennoch gesendet werden.
Um beispielsweise eine neue Sitzung zu erstellen, würden Sie den Befehl session.new 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 Fehlermeldung 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 Interessantes passiert.
Um Ereignisse zu empfangen, muss der Client zuerst diese mit dem Befehl session.subscribe abonnieren.
Der Client kann ein spezifisches Ereignis oder alle Ereignisse in einem Modul abonnieren. Beispielsweise abonniert "browsingContext.contextCreated" den Client für ein einzelnes Ereignis, während "browsingContext" den Client für jedes Ereignis im Modul browsingContext abonniert.
Jede von Ihnen empfangene Ereignisbenachrichtigung vom Browser hat drei Felder:
type: Immer"event".method: Der Ereignisname im Formatmodule_name.event_name.params: Ein Objekt, das die spezifischen Daten des Ereignisses enthält. Die Struktur vonparamsist spezifisch für jedes Ereignis.
Das folgende ist eine Beispiel-Ereignismeldung, die vom Browser gesendet wird, wenn der Client log.entryAdded abonniert hat und eine Konsolennachricht protokolliert wird (einige Felder wurden der Kürze halber weggelassen):
{
"type": "event",
"method": "log.entryAdded",
"params": {
"type": "console",
"level": "info",
"text": "Hello world",
"timestamp": 1657282076037,
"method": "log"
}
}