WebDriver-Fehler
Jeder WebDriver-Befehl, der gesendet wird, kann möglicherweise 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, die Details des Fehlers enthält.
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 Stack-Frames zum Zeitpunkt des Auftretens des Fehlers.
data
(optional)-
Beliebige und implementationsspezifische Daten, die nützlich sein können, um dem Benutzer präsentiert zu werden.
Viele Treiber enthalten den Text der Benutzeraufforderung, wenn sie auf einen unerwarteten offenen Alert stoßen.
Beispiel
Ein Beispiel: Eine GET
-Anfrage an /session/1234/url
, wobei 1234
eine falsche 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 versehen. Dies ist insbesondere dann üblich, wenn eine Benutzeraufforderung, wie window.alert
, nach Ausführung Ihrer vorherigen WebDriver-Befehlsanforderung einen modalen Dialog geöffnet hat.
Da sowohl WebDriver- als auch JavaScript-Ausführungen durch einen solchen Dialog angehalten werden, sehen wir in der nachfolgenden Antwort einen unerwarteten offenen Alert 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 Fehlertyp oder Objektabbildung dargestellt. In Python wird er als WebDriverException
dargestellt, in Node.js als WebDriverError
und in Java ebenfalls als WebDriverException
.
Tabelle der Fehler
Fehlertyp | 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 für Zeiger- oder Tastaturinteraktionen verfügbar ist. |
insecure certificate | 400 Bad Request |
Die Navigation führte dazu, dass der Benutzeragent auf eine Zertifikatswarnung stieß, was normalerweise 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 abgeschlossen werden, da sich das Element in einem ungültigen Zustand befindet, z.B. bei dem Versuch, ein Element zu löschen, das nicht sowohl editierbar als auch zurücksetzbar ist. |
invalid selector | 400 Bad Request |
Ein Befehl zum Abrufen eines Elements hat eine unbekannte Selector-Strategie 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 Sitzung, die gelöscht wurde, nicht wiederverwendet werden kann. |
JavaScript error | 500 Internal Server Error |
Beim Ausführen von vom Benutzer bereitgestelltem JavaScript ist ein Fehler aufgetreten. |
move target out of bounds | 500 Internal Server Error |
Das Ziel für Mausinteraktionen befindet sich nicht im Ansichtsbereich des Browsers und kann nicht in diesen Bereich gebracht werden. |
no such alert | 404 Not Found |
Es wurde versucht, 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, um zu einem Frame zu wechseln, konnte nicht erfüllt werden, da der Frame nicht gefunden wurde. |
no such window | 404 Not Found |
Ein Befehl, um zu einem Fenster zu wechseln, konnte nicht erfüllt werden, da das Fenster nicht gefunden wurde. |
script timeout | 408 Request Timeout |
Ein Skript wurde nicht fertiggestellt, bevor seine Zeitüberschreitung abgelaufen ist. |
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 zum Starten der Sitzung nicht übereinstimmten. |
stale element reference | 404 Not Found |
Ein Befehl schlug fehl, weil das referenzierte Element nicht mehr am DOM angehängt ist. |
timeout | 408 Request Timeout |
Eine Operation wurde nicht abgeschlossen, bevor ihre Zeitüberschreitung 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 |
Ein Bildschirmfoto konnte nicht aufgenommen werden. |
unexpected alert open | 500 Internal Server Error |
Ein Dialog wurde geöffnet, der diese Operation blockiert. |
unknown command | 404 Not Found |
Ein Befehl konnte nicht ausgeführt werden, weil der Treiber ihn nicht kannte. |
unknown error | 500 Internal Server Error |
Im Treiber ist ein unbekannter Fehler beim Verarbeiten des Befehls aufgetreten. |
unknown method | 405 Method Not Allowed |
Der angeforderte Befehl entsprach einer bekannten URL, stimmte jedoch nicht mit einer Methode für diese URL überein. |
unsupported operation | 500 Internal Server Error |
Zeigt an, dass ein Befehl, der korrekt hätte ausgeführt werden sollen, aus irgendeinem Grund nicht unterstützt werden kann. |