WebDriver-Fehler
Jeder WebDriver-Befehl, der gesendet wird, könnte möglicherweise eine Fehlermeldung im Response zurückgeben. Ein Fehler wird durch eine HTTP-Antwort mit einem HTTP-Statuscode im Bereich von 4xx oder 5xx dargestellt, sowie durch eine JSON-Nutzlast, die Details des Fehlers enthält.
Nutzlast
Das Fehlerobjekt ist ein JSON-Objekt, das drei und gelegentlich vier Felder enthält:
error
-
Fehlerart.
message
-
Menschlich lesbare Beschreibung der Art des Fehlers.
stacktrace
-
Stacktrace-Bericht der aktiven Stackframes zum Zeitpunkt des Auftretens des Fehlers.
data
(optional)-
Beliebige und implementationsspezifische Daten, die zur Präsentation gegenüber dem Benutzer nützlich sein können.
Viele Treiber fügen den Text des Benutzer-Prompts hinzu, wenn ein unerwartetes Alert-Öffnen Fehler auftritt.
Beispiel
Ein Beispiel wäre eine GET
-Anfrage an /session/1234/url
, wobei 1234
eine ungültige Sitzung ist, die eine Antwort mit dem 404 Not Found
Status und folgendem Inhalt zurückgeben würde:
{
"value": {
"error": "invalid session id",
"message": "No active session with ID 1234",
"stacktrace": ""
}
}
Es ist optional, dass der Treiber Fehler mit zusätzlichen Fehlerdaten annotiert. Insbesondere ist dies häufig der Fall, wenn ein Benutzer-Prompt, wie window.alert
, nach der Ausführung Ihres vorherigen WebDriver-Befehl-Anfrage ein modales Dialogfeld geöffnet hat.
Da sowohl WebDriver- als auch JavaScript-Ausführung durch ein solches Dialogfeld angehalten wird, sehen wir in der nachfolgenden Antwort einen unerwarteten Alert-Öffnen Fehler:
{
"value": {
"error": "unexpected alert open",
"message": "",
"stacktrace": "",
"data": {
"text": "Message from window.alert"
}
}
}
In den meisten Clients wird der Fehler durch eine Art von Fehler typ oder Objektrepräsentation dargestellt. In Python wird er als WebDriverException
dargestellt, in Node.js als WebDriverError
, und in Java ebenfalls als WebDriverException
.
Tabelle der Fehler
Fehlerart | HTTP-Statuscode | Beschreibung |
---|---|---|
element click intercepted | 400 Bad Request |
Der Elementklick Befehl konnte nicht abgeschlossen werden, da das Element, das die Ereignisse empfängt, das angeforderte Element verdeckt. |
element not interactable | 400 Bad Request |
Ein Befehl konnte nicht abgeschlossen werden, da das Element nicht per Zeiger- oder Tastaturschnittstelle interagiert werden kann. |
insecure certificate | 400 Bad Request |
Die Navigation veranlasste den Benutzer-Agenten, eine Zertifikatwarnung zu treffen, was in der Regel auf ein abgelaufenes oder ungültiges TLS-Zertifikat zurückzuführen ist. |
invalid argument | 400 Bad Request |
Die an einen Befehl übergebenen Argumente sind entweder ungültig oder fehlerhaft. |
invalid cookie domain | 400 Bad Request |
Es wurde ein illegaler Versuch unternommen, ein Cookie unter einem anderen Domainnamen als der aktuellen Seite zu setzen. |
invalid element state | 400 Bad Request |
Ein Befehl konnte nicht abgeschlossen werden, da sich das Element in einem ungültigen Zustand befindet, z.B. der Versuch, ein Element zu löschen, das nicht bearbeitbar und zurücksetzbar ist. |
invalid selector | 400 Bad Request |
Ein Elementabrufbefehl hat eine unbekannte Selektorstrategie bereitgestellt. |
invalid session id | 404 Not Found |
Die angegebene Sitzungs-ID wird nicht erkannt, was bedeutet, dass die Sitzung entweder nicht existiert oder nicht aktiv ist. Beachten Sie, dass eine gelöschte Sitzung nicht wiederverwendet werden kann. |
JavaScript error | 500 Internal Server Error |
Bei der Ausführung von JavaScript, das vom Benutzer bereitgestellt wurde, ist ein Fehler aufgetreten. |
move target out of bounds | 500 Internal Server Error |
Das Ziel für Mausinteraktionen befindet sich nicht im Viewport des Browsers und kann nicht in diesen Viewport gebracht werden. |
no such alert | 404 Not Found |
Es wurde versucht, mit einem Benutzerprompt zu arbeiten, wenn kein Fenster geöffnet war. |
no such cookie | 404 Not Found |
Kein Cookie, das mit dem angegebenen Pfadnamen übereinstimmt, wurde unter den Cookies des aktuellen Dokuments gefunden. |
no such element | 404 Not Found |
Ein Element konnte auf der Seite mit den angegebenen Suchparametern nicht gefunden werden. |
no such frame | 404 Not Found |
Ein Befehl zum Wechseln zu einem Frame konnte nicht ausgeführt werden, da der Frame nicht gefunden wurde. |
no such window | 404 Not Found |
Ein Befehl zum Wechseln zu einem Fenster konnte nicht ausgeführt werden, da das Fenster nicht gefunden wurde. |
script timeout | 408 Request Timeout |
Ein Skript wurde nicht abgeschlossen, bevor sein Timeout abgelaufen ist. |
session not created | 500 Internal Server Error |
Eine neue Sitzung konnte nicht erstellt werden, weil entweder der Browser nicht gestartet werden konnte oder die bereitgestellten Funktionen, um die Sitzung zu starten, nicht übereinstimmten. |
stale element reference | 404 Not Found |
Ein Befehl konnte nicht abgeschlossen werden, da das referenzierte Element nicht mehr an das DOM gebunden ist. |
timeout | 408 Request Timeout |
Eine Operation wurde nicht abgeschlossen, bevor ihr Timeout abgelaufen ist. |
unable to set cookie | 500 Internal Server Error |
Ein Befehl, um den Wert eines Cookies zu setzen, konnte nicht erfüllt werden. |
unable to capture screen | 500 Internal Server Error |
Eine Bildschirmaufnahme konnte nicht gemacht werden. |
unexpected alert open | 500 Internal Server Error |
Ein modales Dialogfeld war geöffnet und blockierte diese Operation. |
unknown command | 404 Not Found |
Ein Befehl konnte nicht ausgeführt werden, da der Treiber ihn nicht kannte. |
unknown error | 500 Internal Server Error |
Ein unbekannter Fehler trat im Treiber während der Verarbeitung des Befehls auf. |
unknown method | 405 Method Not Allowed |
Der angeforderte Befehl stimmte mit einer bekannten URL überein, jedoch nicht mit einer Methode für diese URL. |
unsupported operation | 500 Internal Server Error |
Zeigt an, dass ein Befehl, der ordnungsgemäß hätte ausgeführt werden sollen, aus irgendeinem Grund nicht unterstützt werden kann. |