log.entryAdded-Ereignis
Das Ereignis log.entryAdded des Moduls log wird ausgelöst, wenn im Browser ein neuer Protokolleintrag entsteht – entweder durch einen Aufruf der Console-API oder durch einen unbehandelten JavaScript-Fehler.
Ereignisdaten
Das Feld params in der Ereignisbenachrichtigung enthält ein Protokolleintragsobjekt. Je nach Quelle hat dieses Objekt den Typ "console" oder "javascript". Jeder Typ kann zusätzliche quellenspezifische Felder enthalten.
Gemeinsame Felder
Alle Protokolleintragsobjekte enthalten die folgenden Felder:
level-
Eine Zeichenfolge, die den Schweregrad des Protokolleintrags angibt. Sie hat einen der folgenden Werte:
"debug": Eine Debug-Meldung (vonconsole.debug()oderconsole.trace())."info": Eine Informationsmeldung (vonconsole.log(),console.info()und anderen Console-Methoden, die keinen spezifischeren Schweregrad erzeugen)."warn": Eine Warnmeldung (vonconsole.warn())."error": Eine Fehlermeldung (vonconsole.error()oderconsole.assert()).
source-
Ein Objekt, das den Realm identifiziert, in dem der Protokolleintrag erstellt wurde. Es enthält die folgenden Felder:
realm-
Eine Zeichenfolge mit der ID des Realms.
contextOptional-
Eine Zeichenfolge mit der ID des Kontexts, in dem der Protokolleintrag erstellt wurde.
userContextOptional-
Eine Zeichenfolge mit der ID des Benutzerkontexts, in dem das skriptbezogene Ereignis aufgetreten ist.
stackTraceOptional-
Ein Objekt mit einem
callFrames-Array, das den JavaScript-Aufrufstapel zum Zeitpunkt der Erstellung des Eintrags darstellt. Jedes Element des Arrays ist ein Aufrufrahmen mit den folgenden Feldern:columnNumber,functionName,lineNumberundurl. text-
Eine Zeichenfolge mit der Protokollmeldung oder
null, wenn sie nicht verfügbar ist. Bei Console-Einträgen besteht sie aus den aneinandergereihten, durch Leerzeichen getrennten Zeichenfolgendarstellungen aller Argumente; bei JavaScript-Fehlern ist sie in der Regel die Fehlermeldung. Das genaue Format hängt vom Browser ab. Verlassen Sie sich daher bei Assertions in Tests nicht auf diesen Wert. timestamp-
Eine nicht negative Ganzzahl, die den Erstellungszeitpunkt des Protokolleintrags als Anzahl der seit der Unix-Epoche verstrichenen Millisekunden angibt (
Date.now()). type-
Eine Zeichenfolge, die die Quelle des Protokolleintrags identifiziert. Sie hat einen der folgenden Werte:
"console": Gibt an, dass der Protokolleintrag durch den Aufruf einer Console-API-Methode erzeugt wurde (beispielsweiseconsole.log()oderconsole.warn()). Protokolleintragsobjekte dieses Typs enthalten zusätzliche Felder."javascript": Gibt an, dass der Protokolleintrag durch einen unbehandelten JavaScript-Fehler erzeugt wurde.
Felder von "console"-Protokolleinträgen
Zusätzlich zu den gemeinsamen Feldern enthalten Protokolleintragsobjekte mit "type": "console" die folgenden Felder:
args-
Ein Array von Objekten, die die an die Console-Methode übergebenen Argumente darstellen. Jedes Objekt hat ein
type-Feld (beispielsweise"string","number","boolean"oder"array") und optional die Feldervalue,handleundinternalId. method-
Eine Zeichenfolge mit dem Namen der aufgerufenen Console-Methode (beispielsweise
"log","error","assert","debug","trace"oder"warn").
Beispiele
>Ein Ereignis für einen Console-Protokolleintrag empfangen
Wenn eine WebDriver-BiDi-Verbindung und ein Abonnement für log.entryAdded aktiv sind, sendet der Browser ein log.entryAdded-Ereignis, sobald ein Skript console.log("hello", [1, true, "foo"]) ausführt:
{
"type": "event",
"method": "log.entryAdded",
"params": {
"type": "console",
"method": "log",
"source": {
"realm": "7c37f4c0-abcd-1234-ef56-789012345678",
"context": "6B3D5B3A-6571-432B-8E96-E53B5C2ECBB5"
},
"args": [
{
"type": "string",
"value": "hello"
},
{
"type": "array",
"value": [
{ "type": "number", "value": 1 },
{ "type": "boolean", "value": true },
{ "type": "string", "value": "foo" }
]
}
],
"level": "info",
"text": "hello 1,true,foo",
"timestamp": 1712345678901,
"stackTrace": {
"callFrames": [
{
"columnNumber": 8,
"functionName": "",
"lineNumber": 1,
"url": "https://example.com/app.js"
}
]
}
}
}
Ein Ereignis für eine Console-Warnung empfangen
Wenn eine WebDriver-BiDi-Verbindung und ein Abonnement für log.entryAdded aktiv sind, sendet der Browser ein log.entryAdded-Ereignis, sobald ein Skript console.warn("something went wrong") ausführt:
{
"type": "event",
"method": "log.entryAdded",
"params": {
"type": "console",
"method": "warn",
"source": {
"realm": "7c37f4c0-abcd-1234-ef56-789012345678",
"context": "6B3D5B3A-6571-432B-8E96-E53B5C2ECBB5"
},
"args": [
{
"type": "string",
"value": "something went wrong"
}
],
"level": "warn",
"text": "something went wrong",
"timestamp": 1712345678950,
"stackTrace": {
"callFrames": [
{
"columnNumber": 8,
"functionName": "",
"lineNumber": 1,
"url": "https://example.com/app.js"
}
]
}
}
}
Ein Ereignis für einen unbehandelten JavaScript-Fehler empfangen
Wenn eine WebDriver-BiDi-Verbindung und ein Abonnement für log.entryAdded aktiv sind, sendet der Browser ein log.entryAdded-Ereignis, sobald ein unbehandelter JavaScript-Fehler auftritt:
{
"type": "event",
"method": "log.entryAdded",
"params": {
"type": "javascript",
"level": "error",
"source": {
"realm": "7c37f4c0-abcd-1234-ef56-789012345678",
"context": "6B3D5B3A-6571-432B-8E96-E53B5C2ECBB5"
},
"text": "ReferenceError: undefinedVariable is not defined",
"timestamp": 1712345679100,
"stackTrace": {
"callFrames": [
{
"columnNumber": 27,
"functionName": "",
"lineNumber": 3,
"url": "https://example.com/app.js"
},
{
"columnNumber": 18,
"functionName": "",
"lineNumber": 3,
"url": "https://example.com/app.js"
}
]
}
}
}
Spezifikationen
| Spezifikation |
|---|
| WebDriver BiDi> # event-log-entryAdded> |
Browser-Kompatibilität
Siehe auch
- Befehl
session.subscribe - API
console