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 4xx oder 5xx dargestellt und enthält eine JSON-Nutzlast mit Details des Fehlers.
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 über die aktiven Stack-Frames zum Zeitpunkt des Auftretens des Fehlers.
data
(optional)-
Beliebige und implementierungsdefinierte Daten, die nützlich sein können, dem Benutzer zu präsentieren.
Viele Treiber enthalten den Text der Benutzeraufforderung bei Auftreten eines unerwarteten geöffneten Alarms-Fehlers.
Beispiel
Zum Beispiel würde ein GET
-Anfrage an /session/1234/url
, wobei 1234
eine ungültige Sitzung ist, eine Antwort mit dem 404 Not Found
Status und dem folgenden Körper 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. Dies ist insbesondere üblich, wenn eine Benutzeraufforderung, wie window.alert
, nach der Ausführung Ihrer vorherigen WebDriver-Befehl-Anfrage einen modalen Dialog geöffnet hat.
Da sowohl die WebDriver- als auch die JavaScript-Ausführung durch einen solchen Dialog angehalten werden, sehen wir in der nachfolgenden Antwort einen unerwarteten geöffneten 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 Fehlertyp oder Objektdarstellung dargestellt. In Python wird er als WebDriverException
dargestellt, in Node.js als WebDriverError
, und in Java ebenfalls als WebDriverException
.
Fehlerübersicht
Fehlertyp | HTTP-Statuscode | Beschreibung |
---|---|---|
Element click intercepted | 400 Bad Request |
Der Element Click-Befehl konnte nicht abgeschlossen werden, weil das Element, das die Ereignisse empfängt, das angeforderte Element verdeckt. |
Element not interactable | 400 Bad Request |
Ein Befehl konnte nicht abgeschlossen werden, weil das Element weder zeiger- noch tastaturinteraktiv ist. |
Unsicheres Zertifikat | 400 Bad Request |
Die Navigation führte dazu, dass der Benutzeragent auf eine Zertifikatwarnung stieß, was normalerweise das Ergebnis eines abgelaufenen oder ungültigen TLS-Zertifikats ist. |
Ungültiges Argument | 400 Bad Request |
Die an einen Befehl übergebenen Argumente sind entweder ungültig oder fehlerhaft. |
Ungültige Cookie-Domain | 400 Bad Request |
Ein illegaler Versuch wurde unternommen, ein Cookie unter einer anderen Domain als der aktuellen Seite zu setzen. |
Ungültiger Elementstatus | 400 Bad Request |
Ein Befehl konnte nicht abgeschlossen werden, weil das Element in einem ungültigen Status ist, z.B. beim Versuch, ein nicht sowohl bearbeitbares als auch zurücksetzbares Element zu löschen. |
Ungültiger Selektor | 400 Bad Request |
Ein Elementabrufbefehl stellte eine unbekannte Selektorstrategie bereit. |
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 gelöschte Sitzung nicht wiederverwendet werden kann. |
JavaScript-Fehler | 500 Internal Server Error |
Ein Fehler trat beim Ausführen von JavaScript auf, das vom Benutzer bereitgestellt wurde. |
Ziel verschieben außerhalb der Grenzen | 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. |
Kein solches Warnfenster | 404 Not Found |
Ein Versuch wurde unternommen, mit einer Benutzeraufforderung zu arbeiten, wenn 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 mit den angegebenen Suchparametern nicht gefunden werden. |
Kein solcher Rahmen | 404 Not Found |
Ein Befehl, um zu einem Rahmen zu wechseln, konnte nicht erfüllt werden, weil der Rahmen nicht gefunden werden konnte. |
Kein solches Fenster | 404 Not Found |
Ein Befehl, um zu einem Fenster zu wechseln, konnte nicht erfüllt werden, weil das Fenster nicht gefunden werden konnte. |
Script-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. |
Veraltete Elementreferenz | 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 kann nicht gesetzt werden | 500 Internal Server Error |
Ein Befehl, um den Wert eines Cookies zu setzen, konnte nicht erfüllt werden. |
Bildschirm kann nicht erfasst werden | 500 Internal Server Error |
Eine Bildschirmaufnahme war unmöglich. |
Unerwarteter geöffneter Alarm | 500 Internal Server Error |
Ein modales Dialogfeld war geöffnet, was diese Operation blockierte. |
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 beim Verarbeiten des Befehls auf. |
Unbekannte Methode | 405 Method Not Allowed |
Der angeforderte Befehl entsprach einer bekannten URL, passte jedoch nicht zu einer Methode für diese URL. |
Nicht unterstützte Operation | 500 Internal Server Error |
Gibt an, dass ein Befehl, der korrekt hätte ausgeführt werden sollen, aus irgendeinem Grund nicht unterstützt werden kann. |