WebDriver-Fehler
Jeder WebDriver-klassische Befehl, der gesendet wird, kann möglicherweise eine Fehlermeldung als Antwort erhalten. Ein Fehler wird durch eine HTTP-Antwort mit einem HTTP-Statuscode im Bereich von 4xx oder 5xx dargestellt, und eine JSON-Nutzlast enthält 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 zu dem Zeitpunkt, als der Fehler auftrat.
data(optional)-
Beliebige und implementierungsdefinierte Daten, die es sinnvoll sein kann, dem Benutzer zu präsentieren. Viele Treiber enthalten den Text der Benutzeraufforderung, wenn ein unerwartetes Alert geöffnet Fehler auftritt.
Beispiel
Ein Beispiel wäre eine GET-Anfrage an /session/1234/url, wobei 1234 eine ungültige Sitzung ist. Diese 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 versehen. Dies ist besonders üblich, wenn eine Benutzeraufforderung, wie window.alert, nach Ausführung Ihrer vorherigen WebDriver-Befehlsanfrage einen modalen Dialog geöffnet hat.
Da sowohl die WebDriver- als auch die JavaScript-Ausführung durch einen solchen Dialog angehalten werden, sehen wir einen unerwarteten Alert geöffnet Fehler in der nachfolgenden Antwort:
{
"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 werden. 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 Element Click Befehl konnte nicht ausgeführt werden, da das Element, das die Ereignisse empfängt, das angeforderte Element verdeckt. |
| Element Not Interactable | 400 Bad Request |
Ein Befehl konnte nicht ausgeführt werden, da das Element weder zeiger- noch tastaturseitig interaktiv ist. |
| Insecure Certificate | 400 Bad Request |
Die Navigation führte dazu, dass der Benutzeragent eine Zertifikatswarnung erhielt, 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 falsch formatiert. |
| Invalid Cookie Domain | 400 Bad Request |
Es wurde ein unzulässiger Versuch unternommen, einen Cookie unter einer anderen Domain zu setzen als die aktuelle Seite. |
| Invalid Element State | 400 Bad Request |
Ein Befehl konnte nicht ausgeführt werden, weil sich das Element in einem ungültigen Zustand befindet, z. B. beim Versuch, ein Element zu löschen, das nicht sowohl bearbeitbar als auch zurücksetzbar ist. |
| Invalid Selector | 400 Bad Request |
Ein Element-Abrufbefehl lieferte eine unbekannte Selektorstrategie. |
| 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 erneut verwendet werden kann. |
| JavaScript Error | 500 Internal Server Error |
Es ist ein Fehler bei der Ausführung von JavaScript aufgetreten, das vom Benutzer bereitgestellt wurde. |
| Move Target Out Of Bounds | 500 Internal Server Error |
Das Ziel für die Mausinteraktion befindet sich nicht im Ansichtsbereich des Browsers und kann nicht in diesen Ansichtsbereich gebracht werden. |
| No Such Alert | 404 Not Found |
Es wurde versucht, mit einer Benutzeraufforderung zu arbeiten, obwohl keine geöffnet war. |
| No Such Cookie | 404 Not Found |
Kein Cookie, das dem angegebenen Pfadnamen entspricht, 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 ausgeführt werden, weil das Frame nicht gefunden werden konnte. |
| No Such Window | 404 Not Found |
Ein Befehl, um zu einem Fenster zu wechseln, 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 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, um die Sitzung zu starten, nicht übereinstimmten. |
| Stale Element Reference | 404 Not Found |
Ein Befehl schlug fehl, 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. |
| 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 |
Ein Bildschirmfoto konnte nicht aufgenommen werden. |
| Unexpected Alert Open | 500 Internal Server Error |
Ein modaler Dialog war geöffnet und blockierte diesen Vorgang. |
| 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 trat ein unbekannter Fehler auf, während der Befehl verarbeitet wurde. |
| 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 ordnungsgemäß ausgeführt werden sollte, aus irgendeinem Grund nicht unterstützt werden kann. |