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 einen anderen Typ: "console" oder "javascript". Jeder Typ kann zusätzliche, quellenspezifische Felder enthalten.
Gemeinsame Felder
Alle Protokolleintragsobjekte enthalten die folgenden Felder:
level-
Ein String, der den Schweregrad des Protokolleintrags angibt. Er 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-
Ein String mit der ID des Realm.
contextOptional-
Ein String mit der ID des Kontexts, in dem der Protokolleintrag erstellt wurde.
userContextOptional-
Ein String mit der ID des Benutzerkontexts, in dem das skriptbezogene Ereignis aufgetreten ist.
stackTraceOptional-
Ein Objekt, das den JavaScript-Aufrufstapel zum Zeitpunkt der Erstellung des Protokolleintrags darstellt. Es enthält das folgende Feld:
callFrames-
Ein Array mit null oder mehr Stack-Frame-Objekten. Jedes Objekt enthält die folgenden Felder:
columnNumber-
Eine nicht negative Ganzzahl mit der nullbasierten Spaltennummer des ausgeführten Codes.
functionName-
Ein String mit dem Namen der ausgeführten Funktion.
lineNumber-
Eine nicht negative Ganzzahl mit der nullbasierten Zeilennummer des ausgeführten Codes.
url-
Ein String mit der URL des Skripts.
text-
Ein String mit der Protokollmeldung oder
null, falls keine verfügbar ist. Bei Console-Einträgen besteht er aus allen in Strings umgewandelten Argumenten, die durch Leerzeichen verbunden sind; bei JavaScript-Fehlern enthält er in der Regel die Fehlermeldung. Das genaue Format hängt vom Browser ab. Verlassen Sie sich daher bei Prüfungen in Tests nicht auf diesen Wert. timestamp-
Eine nicht negative Ganzzahl, die den Zeitpunkt der Erstellung des Protokolleintrags als Anzahl der seit der Unix-Epoche vergangenen Millisekunden angibt (
Date.now()). type-
Ein String, der die Quelle des Protokolleintrags identifiziert. Er hat einen der folgenden Werte:
"console": Gibt an, dass der Protokolleintrag durch den Aufruf einer Console-API-Methode erzeugt wurde (zum Beispielconsole.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" auch:
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") sowie optionale Feldervalue,handleundinternalId. method-
Ein String mit dem Namen der aufgerufenen Console-Methode (beispielsweise
"log","error","assert","debug","trace"oder"warn").
Beispiele
>Ein Ereignis für eine Console-Protokollmeldung 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