log.entryAdded Ereignis
Das log.entryAdded Ereignis des log Moduls wird ausgelöst, wenn ein neuer Log-Eintrag im Browser erstellt wird, entweder durch einen Aufruf der Konsolen-API oder einen nicht abgefangenen JavaScript-Fehler.
Ereignisdaten
Das params Feld in der Ereignisbenachrichtigung ist ein Log-Eintrag-Objekt. Abhängig von der Quelle des Logs hat das Log-Eintrag-Objekt unterschiedliche Typen: "console" oder "javascript". Jeder Typ kann zusätzliche Felder bereitstellen, die spezifisch für diese Quelle sind.
Gemeinsame Felder
Alle Log-Eintrag-Objekte enthalten die folgenden Felder:
level-
Ein Zeichenfolgenwert, der die Schwere des Log-Eintrags angibt. Er hat einen der folgenden Werte:
"debug": Eine Debug-Nachricht (vonconsole.debug()oderconsole.trace())."info": Eine Informationsnachricht (vonconsole.log(),console.info()und anderen Konsolenmethoden, die keinen spezifischeren Level erzeugen)."warn": Eine Warnmeldung (vonconsole.warn())."error": Eine Fehlermeldung (vonconsole.error()oderconsole.assert()).
source-
Ein Objekt, das den Realm identifiziert, in dem der Log-Eintrag erstellt wurde. Es enthält die folgenden Felder:
realm-
Eine Zeichenfolge, die die ID des Realms enthält.
contextOptional-
Eine Zeichenfolge, die die ID des Kontexts enthält, in dem der Log-Eintrag erstellt wurde.
userContextOptional-
Eine Zeichenfolge, die die ID des Benutzerkontexts enthält, in dem das skriptbezogene Ereignis aufgetreten ist.
stackTraceOptional-
Ein Objekt mit einem
callFramesArray, das den JavaScript-Stack zum Zeitpunkt der Erstellung des Eintrags darstellt. Jedes Element im Array ist ein Stack-Frame mit den folgenden Feldern:columnNumber,functionName,lineNumber, undurl. text-
Eine Zeichenfolge, die die Log-Nachricht enthält, oder
null, wenn nicht verfügbar. Für Konsoleneinträge ist es die Verkettung aller Konvertierungen in Zeichenfolgenargumenten, die durch Leerzeichen verbunden sind, und für JavaScript-Fehler ist es im Allgemeinen die Fehlermeldung. Das genaue Format ist Browser-abhängig, daher sollten Sie sich nicht auf diesen Wert für Behauptungen in Tests verlassen. timestamp-
Eine nicht-negative Ganzzahl, die die Zeit in UTC darstellt, zu der der Log-Eintrag erstellt wurde, in Millisekunden seit der Epoche (
Date.now()). type-
Eine Zeichenfolge, die die Quelle des Log-Eintrags identifiziert. Sie hat einen der folgenden Werte:
"console": Gibt an, dass der Log-Eintrag durch einen Aufruf einer Konsolen-API-Methode generiert wurde (zum Beispiel,console.log(),console.warn()). Log-Eintrag-Objekte dieses Typs enthalten zusätzliche Felder."javascript": Gibt an, dass der Log-Eintrag durch einen nicht abgefangenen JavaScript-Fehler erzeugt wurde.
"console" Log-Eintragsfelder
Zusätzlich zu den gemeinsamen Feldern enthalten Log-Eintrag-Objekte mit "type": "console" auch:
args-
Ein Array von Objekten, die die an die Konsolenmethode übergebenen Argumente darstellen. Jedes Objekt hat ein
typeFeld (wie"string","number","boolean", oder"array") und optionalevalue,handle, undinternalIdFelder. method-
Eine Zeichenfolge, die den Namen der aufgerufenen Konsolenmethode enthält (zum Beispiel,
"log","error","assert","debug","trace","warn").
Beispiele
>Empfang eines Ereignisses für ein Konsolenprotokoll
Mit einer WebDriver BiDi Verbindung und einem Abonnement für log.entryAdded aktiv, sendet der Browser ein log.entryAdded Ereignis, wenn ein Skript console.log("hello", [1, true, "foo"]) auswertet:
{
"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"
}
]
}
}
}
Empfang eines Ereignisses für eine Konsolenwarnung
Mit einer WebDriver BiDi Verbindung und einem Abonnement für log.entryAdded aktiv, sendet der Browser ein log.entryAdded Ereignis, wenn ein Skript console.warn("something went wrong") auswertet:
{
"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"
}
]
}
}
}
Empfang eines Ereignisses für einen nicht abgefangenen JavaScript-Fehler
Mit einer WebDriver BiDi Verbindung und einem Abonnement für log.entryAdded aktiv, sendet der Browser ein log.entryAdded Ereignis, wenn ein nicht abgefangener 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
session.subscribeBefehlconsoleAPI