session.subscribe-Befehl
Der session.subscribe Befehl des session-Moduls registriert den Client, um Ereignisse asynchron zu empfangen, entweder pro Ereignis oder pro Modul, global oder auf spezifische Kontexte beschränkt.
Syntax
{
"method": "session.subscribe",
"params": {
"events": ["<event name>"]
}
}
Parameter
Das params-Feld enthält:
events-
Ein Array aus einem oder mehreren Ereignisnamen-Strings. Verwenden Sie einen Modulnamen (zum Beispiel
"log"), um alle Ereignisse in diesem Modul zu abonnieren, oder einen spezifischen Ereignisnamen (zum Beispiel"log.entryAdded"), um nur dieses Ereignis zu abonnieren. contextsOptional-
Ein Array aus einer oder mehreren Kontext-IDs (UUIDs), die jeweils einem Tab oder einem Frame entsprechen. Kontext-IDs werden durch Befehle wie
browsingContext.getTreezurückgegeben. Wenn angegeben, werden Ereignisse nur für diese Kontexte und deren Nachkommen empfangen. Wenn die Kontext-ID einem Frame entspricht, wird das Abonnement für den Top-Level-Kontext (Tab) erstellt, dem der Frame gehört.Dieses Feld kann nicht verwendet werden, wenn
userContextsebenfalls angegeben ist. userContextsOptional-
Ein Array aus einer oder mehreren Benutzerkontext-IDs (UUIDs), die jeweils einem Browser-Kontext oder Container entsprechen. Benutzerkontext-IDs werden durch Befehle wie
browser.createUserContextoderbrowser.getUserContextszurückgegeben. Wenn angegeben, werden Ereignisse nur für diese Benutzerkontexte empfangen.Dieses Feld kann nicht verwendet werden, wenn
contextsebenfalls angegeben ist.
Wenn weder contexts noch userContexts bereitgestellt werden, ist das Abonnement global, sodass Ereignisse für alle Kontexte empfangen werden.
Rückgabewert
Das result-Feld in der Antwort ist ein Objekt mit dem folgenden Feld:
subscription-
Ein String, der den eindeutigen Bezeichner für dieses Abonnement enthält.
Fehler
invalid argument-
Wird in einem der folgenden Fälle ausgelöst:
- Das
events-Array ist leer, weggelassen oder enthält einen nicht erkannten Ereignisnamen. contextsoderuserContextswird bereitgestellt, ist jedoch leer.- Sowohl
contextsals auchuserContextswerden in derselben Anfrage bereitgestellt. - Ein Parameterwert hat einen ungültigen Typ.
- Das
Beispiele
>Abonnieren eines Ereignisses global
Mit einer WebDriver BiDi-Verbindung und einer aktiven Sitzung senden Sie die folgende Nachricht, um das log.entryAdded-Ereignis für alle Kontexte zu abonnieren:
{
"id": 2,
"method": "session.subscribe",
"params": {
"events": ["log.entryAdded"]
}
}
Der Browser antwortet mit einer Abonnement-ID wie folgt:
{
"id": 2,
"type": "success",
"result": {
"subscription": "c7b7b3a2-1f4b-4b4e-8a1f-2a3b4c5d6e7f"
}
}
Abonnieren mehrerer Ereignisse global
Mit einer WebDriver BiDi-Verbindung und einer aktiven Sitzung senden Sie die folgende Nachricht, um alle Ereignisse im log-Modul und ein spezifisches Ereignis aus dem network-Modul zu abonnieren:
{
"id": 3,
"method": "session.subscribe",
"params": {
"events": ["log", "network.beforeRequestSent"]
}
}
Der Browser antwortet mit einer Abonnement-ID wie folgt:
{
"id": 3,
"type": "success",
"result": {
"subscription": "e9d0a5c4-3h6d-6d6g-0c3h-4c5d6e7f8g9h"
}
}
Abonnieren von auf einen Tab beschränkten Ereignissen
Angenommen, Ihre Automatisierung hat zwei Tabs geöffnet - einen für die Startseite und einen anderen für die Checkout-Seite. Um log.entryAdded-Ereignisse nur vom Checkout-Tab zu empfangen, senden Sie die folgende Nachricht mit der Kontext-ID dieses Tabs:
{
"id": 4,
"method": "session.subscribe",
"params": {
"events": ["log.entryAdded"],
"contexts": ["9b4e2f1a-3c7d-4b8e-a2f5-6d1c9e3b7f4a"]
}
}
Der Browser antwortet mit einer Abonnement-ID wie folgt:
{
"id": 4,
"type": "success",
"result": {
"subscription": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
}
}
Spezifikationen
| Spezifikation |
|---|
| WebDriver BiDi> # command-session-subscribe> |
Browser-Kompatibilität
Siehe auch
session.unsubscribe-Befehlsession.new-Befehlsession.end-Befehl