WebDriver-Fehler
Jeder WebDriver-Befehl, der gesendet wird, kann plausiblerweise eine Fehler-Antwort erhalten. Ein Fehler wird durch eine HTTP-Antwort mit einem HTTP-Statuscode im Bereich von 4xx oder 5xx dargestellt und enthält eine JSON-Nutzlast mit Details zum Fehler.
Nutzlast
Das Fehlerobjekt ist ein JSON-Objekt, das drei, manchmal vier Felder enthält:
error
-
Fehlertyp.
message
-
Menschlich lesbare Beschreibung der Art des Fehlers.
stacktrace
-
Stacktrace-Bericht der aktiven Stapelrahmen zum Zeitpunkt des Auftretens des Fehlers.
data
(optional)-
Beliebige und implementierungsdefinierte Daten, die dem Benutzer nützlich sein können.
Viele Treiber enthalten den Text der Benutzeraufforderung, wenn sie auf einen unerwartet offenen Alarm-Fehler stoßen.
Beispiel
Ein Beispiel: Eine GET
-Anfrage an /session/1234/url
, wobei 1234
eine ungültige Sitzung ist, würde eine Antwort mit dem Status 404 Not Found
und folgendem Inhalt zurückgeben:
{
"value": {
"error": "invalid session id",
"message": "No active session with ID 1234",
"stacktrace": ""
}
}
Es ist optional für den Treiber, Fehler mit zusätzlichen Fehlerinformationen zu annotieren. Dies ist insbesondere üblich, wenn eine Benutzeraufforderung, wie window.alert
, ein modales Dialogfeld nach der Ausführung Ihrer vorherigen WebDriver-Befehlsanfrage geöffnet hat.
Da sowohl die Ausführung von WebDriver als auch von JavaScript durch ein solches Dialogfeld gestoppt wird, sehen wir einen unerwartet offenen Alarm-Fehler in der nachfolgenden Antwort:
{
"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 Objektdarstellung dargestellt. In Python wird es als WebDriverException
dargestellt, in Node.js als WebDriverError
und in Java ebenfalls als WebDriverException
.
Tabelle der Fehler
Fehlertyp | HTTP-Statuscode | Beschreibung |
---|---|---|
Elementklick blockiert | 400 Bad Request |
Der Element Click-Befehl konnte nicht abgeschlossen werden, da das Element, das die Ereignisse empfängt, das angeklickte Element verdeckt. |
Element nicht interagierbar | 400 Bad Request |
Ein Befehl konnte nicht abgeschlossen werden, da das Element nicht zeige- oder tastaturinteragierbar ist. |
Unsicheres Zertifikat | 400 Bad Request |
Die Navigation führte dazu, dass der Benutzeragent eine Zertifikatswarnung angezeigt hat, was normalerweise auf ein abgelaufenes oder ungültiges TLS-Zertifikat zurückzuführen ist. |
Ungültiges Argument | 400 Bad Request |
Die an einen Befehl übergebenen Argumente sind entweder ungültig oder fehlerhaft formatiert. |
Ungültige Cookie-Domain | 400 Bad Request |
Es wurde ein illegaler Versuch unternommen, ein Cookie unter einer anderen Domain als der aktuellen Seite zu setzen. |
Ungültiger Element-Status | 400 Bad Request |
Ein Befehl konnte nicht abgeschlossen werden, da das Element in einem ungültigen Zustand ist, z.B. der Versuch, ein Element, das nicht bearbeitbar und rücksetzbar ist, zu löschen. |
Ungültiger Selektor | 400 Bad Request |
Ein Elementabrufsbefehl hat eine unbekannte Selektorstrategie bereitgestellt. |
Ungültige Sitzungs-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 Sitzung, die gelöscht wurde, nicht wiederverwendet werden kann. |
JavaScript-Fehler | 500 Internal Server Error |
Ein Fehler trat bei der Ausführung von JavaScript auf, das vom Benutzer bereitgestellt wurde. |
Ziel außerhalb des Bildschirmbereichs | 500 Internal Server Error |
Das Ziel für die Mausinteraktion befindet sich nicht im Viewport des Browsers und kann nicht in diesen Viewport gebracht werden. |
Kein solcher Alarm | 404 Not Found |
Es wurde versucht, auf eine Benutzeraufforderung zuzugreifen, obwohl keine geöffnet war. |
Kein solches Cookie | 404 Not Found |
Kein Cookie, das dem angegebenen Pfadnamen entspricht, wurde unter den Cookies des aktuellen Dokuments gefunden. |
Kein solches Element | 404 Not Found |
Ein Element konnte auf der Seite mithilfe der angegebenen Suchparameter nicht gefunden werden. |
Kein solcher Rahmen | 404 Not Found |
Ein Befehl zum Wechseln zu einem Rahmen konnte nicht erfüllt werden, da der Rahmen nicht gefunden wurde. |
Kein solches Fenster | 404 Not Found |
Ein Befehl zum Wechseln zu einem Fenster konnte nicht erfüllt werden, da das Fenster nicht gefunden wurde. |
Skript-Timeout | 408 Request Timeout |
Ein Skript wurde nicht abgeschlossen, bevor sein Timeout abgelaufen ist. |
Sitzung nicht erstellt | 500 Internal Server Error |
Eine neue Sitzung konnte nicht erstellt werden, entweder weil der Browser nicht gestartet werden konnte oder weil die bereitgestellten Fähigkeiten zum Starten der Sitzung nicht übereinstimmten. |
Veraltetereferenz | 404 Not Found |
Ein Befehl ist fehlgeschlagen, weil das referenzierte Element nicht mehr an das DOM angehängt ist. |
Timeout | 408 Request Timeout |
Eine Operation wurde nicht abgeschlossen, bevor ihr Timeout abgelaufen ist. |
Cookie konnte nicht gesetzt werden | 500 Internal Server Error |
Ein Befehl, um den Wert eines Cookies zu setzen, konnte nicht erfüllt werden. |
Bildschirmaufnahme nicht möglich | 500 Internal Server Error |
Eine Bildschirmaufnahme war unmöglich. |
Unerwartet offener Alarm | 500 Internal Server Error |
Ein modales Dialogfeld war geöffnet und blockierte diesen Vorgang. |
Unbekannter Befehl | 404 Not Found |
Ein Befehl konnte nicht ausgeführt werden, weil der Treiber ihn nicht kannte. |
Unbekannter Fehler | 500 Internal Server Error |
Ein unbekannter Fehler trat im Treiber auf, während der Befehl verarbeitet wurde. |
Unbekannte Methode | 405 Method Not Allowed |
Der angeforderte Befehl entsprach einer bekannten URL, stimmte jedoch nicht mit einer Methode für diese URL überein. |
Nicht unterstützte 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. |