WebDriver-Fehler
Jeder WebDriver-Befehl, der gesendet wird, könnte plausibel eine Fehler-Antwort erhalten. Ein Fehler wird durch eine HTTP-Antwort mit einem HTTP-Statuscode im Bereich 4xx oder 5xx dargestellt und enthält eine JSON-Nutzlast mit Details zum Fehler.
Nutzlast
Das Fehlerobjekt ist ein JSON-Objekt, das drei und manchmal vier Felder enthält:
error
-
Fehlertyp.
message
-
Menschlich lesbare Beschreibung der Art des Fehlers.
stacktrace
-
Stacktrace-Bericht der aktiven Stack-Frames zum Zeitpunkt des Auftretens des Fehlers.
data
(optional)-
Beliebige und implementierungsdefinierte Daten, die nützlich sein können, um sie dem Benutzer zu präsentieren.
Viele Treiber fügen den Text der Benutzeraufforderung hinzu, wenn sie auf einen unerwarteten offenen Alarm stoßen.
Beispiel
Ein Beispiel: Eine GET
-Anfrage an /session/1234/url
, bei der 1234
eine falsche Sitzung ist, würde eine Antwort mit dem 404 Not Found
Status 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 Fehlerdaten zu annotieren. Besonders häufig ist dies, wenn eine Benutzeraufforderung, wie zum Beispiel window.alert
, nach der Ausführung Ihres vorherigen WebDriver-Befehls eine modale Dialogbox geöffnet hat.
Da sowohl WebDriver- als auch JavaScript-Ausführungen durch einen solchen Dialog unterbrochen werden, sehen wir in der nachfolgenden Antwort einen unerwarteten offenen Alarm Fehler:
{
"value": {
"error": "unexpected alert open",
"message": "",
"stacktrace": "",
"data": {
"text": "Message from window.alert"
}
}
}
In den meisten Clients würde der Fehler durch eine Art Fehler-Typ oder Objektdarstellung dargestellt. In Python wird es als WebDriverException
, in Node.js als WebDriverError
, und in Java ebenfalls als WebDriverException
dargestellt.
Tabelle der Fehler
Fehlertyp | HTTP-Statuscode | Beschreibung |
---|---|---|
element click intercepted | 400 Bad Request |
Der Element Click Befehl konnte nicht ausgeführt werden, weil das Element, das die Ereignisse empfängt, das Element, das angeklickt werden sollte, verdeckt. |
element not interactable | 400 Bad Request |
Ein Befehl konnte nicht ausgeführt werden, weil das Element nicht pointer- oder tastaturinteraktiv ist. |
insecure certificate | 400 Bad Request |
Die Navigation führte dazu, dass der Benutzeragent auf eine Zertifikatswarnung stieß, was meist das Ergebnis eines abgelaufenen oder ungültigen TLS-Zertifikats 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 einer anderen Domain als der aktuellen Seite zu setzen. |
invalid element state | 400 Bad Request |
Ein Befehl konnte nicht ausgeführt werden, weil das Element in einem ungültigen Zustand ist, z.B. der Versuch, ein nicht sowohl editierbares als auch rücksetzbares Element zu löschen. |
invalid selector | 400 Bad Request |
Ein Elementabrufbefehl lieferte eine unbekannte Selektor-Strategie. |
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 Sitzung, die gelöscht wurde, nicht wiederverwendet werden kann. |
JavaScript error | 500 Internal Server Error |
Beim Ausführen des vom Benutzer bereitgestellten JavaScript 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 gebracht werden. |
no such alert | 404 Not Found |
Ein Versuch wurde unternommen, mit einer Benutzeraufforderung zu operieren, als keine 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, der zu einem Frame wechseln sollte, konnte nicht ausgeführt werden, weil der Frame nicht gefunden werden konnte. |
no such window | 404 Not Found |
Ein Befehl, der zu einem Fenster wechseln sollte, konnte nicht ausgeführt werden, weil das Fenster nicht gefunden werden konnte. |
script timeout | 408 Request Timeout |
Ein Skript wurde nicht abgeschlossen, bevor sein Timeout ablief. |
session not created | 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, um die Sitzung zu starten, nicht übereinstimmten. |
stale element reference | 404 Not Found |
Ein Befehl ist fehlgeschlagen, weil das referenzierte Element nicht mehr mit dem DOM verbunden ist. |
timeout | 408 Request Timeout |
Eine Operation wurde nicht abgeschlossen, bevor ihr Timeout ablief. |
unable to set cookie | 500 Internal Server Error |
Ein Befehl, um den Wert eines Cookies zu setzen, konnte nicht ausgeführt werden. |
unable to capture screen | 500 Internal Server Error |
Eine Bildschirmaufnahme war nicht möglich. |
unexpected alert open | 500 Internal Server Error |
Ein modales Dialogfeld war offen und blockierte diese Operation. |
unknown command | 404 Not Found |
Ein Befehl konnte nicht ausgeführt werden, weil der Treiber ihn nicht erkannte. |
unknown error | 500 Internal Server Error |
Ein unbekannter Fehler trat im Treiber auf, als der Befehl verarbeitet wurde. |
unknown method | 405 Method Not Allowed |
Der angeforderte Befehl stimmte zwar mit einer bekannten URL überein, passte jedoch nicht zu einer Methode für diese URL. |
unsupported operation | 500 Internal Server Error |
Gibt an, dass ein Befehl, der ordnungsgemäß hätte ausgeführt werden sollen, aus irgendeinem Grund nicht unterstützt werden kann. |