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 und einer JSON-Nutzlast, die Details des Fehlers enthält, dargestellt.
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 Stackframes zum Zeitpunkt, als der Fehler auftrat.
data
(optional)-
Beliebige und implementationsdefinierte Daten, die es dem Nutzer nützlich sein können zu präsentieren.
Viele Treiber enthalten den Text der Nutzeraufforderung, wenn sie auf einen unerwartet geöffneten Alert stoßen.
Beispiel
Zum Beispiel würde ein GET
-Anfrage an /session/1234/url
, wobei 1234
eine gefälschte Sitzung ist, 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 Fehlerdaten zu versehen. Insbesondere ist dies häufig der Fall, wenn eine Nutzeraufforderung, wie window.alert
, nach der Ausführung Ihrer vorherigen WebDriver-Befehl-Anfrage einen modalen Dialog geöffnet hat.
Da sowohl WebDriver als auch die JavaScript-Ausführung durch einen solchen Dialog angehalten werden, sehen wir einen unerwartet geöffneten Alert-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 von Fehler-Typ oder Objektdarstellung repräsentiert. In Python wird er als WebDriverException
, in Node.js als WebDriverError
und in Java ebenfalls als WebDriverException
dargestellt.
Fehlertabelle
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 tastaturinteraktionsfähig ist. |
insecure certificate | 400 Bad Request |
Die Navigation führte dazu, dass der User-Agent 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 einem anderen Domain als der aktuellen Seite zu setzen. |
invalid element state | 400 Bad Request |
Ein Befehl konnte nicht abgeschlossen werden, weil das Element in einem ungültigen Zustand ist, z. B. wird versucht, ein nicht sowohl editierbares als auch zurücksetzbares Element zu entleeren. |
invalid selector | 400 Bad Request |
Ein Befehl zur Elementabruf hat eine unbekannte Selektorstrategie verwendet. |
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 |
Es trat ein Fehler beim Ausführen von von Nutzern bereitgestelltem JavaScript auf. |
move target out of bounds | 500 Internal Server Error |
Das Ziel für 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 Nutzeraufforderung zu arbeiten, als keine offen 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 anhand der angegebenen Suchparameter nicht gefunden werden. |
no such frame | 404 Not Found |
Ein Befehl, um zu einem Frame zu wechseln, konnte nicht ausgeführt werden, weil der 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 vor dem Ablauf seines Zeitlimits abgeschlossen. |
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 nicht mit den Anforderungen der Sitzung übereinstimmten. |
stale element reference | 404 Not Found |
Ein Befehl schlug fehl, weil das referenzierte Element nicht mehr an den DOM angehängt ist. |
timeout | 408 Request Timeout |
Eine Operation wurde nicht vor dem Ablauf ihres Zeitlimits abgeschlossen. |
unable to set cookie | 500 Internal Server Error |
Ein Befehl zum Setzen des Wertes eines Cookies konnte nicht ausgeführt werden. |
unable to capture screen | 500 Internal Server Error |
Ein Screenshot konnte nicht erstellt werden. |
unexpected alert open | 500 Internal Server Error |
Ein modaler Dialog war geöffnet und blockierte diese Operation. |
unknown command | 404 Not Found |
Ein Befehl konnte nicht ausgeführt werden, weil der Treiber nicht darüber informiert wurde. |
unknown error | 500 Internal Server Error |
Ein unbekannter Fehler trat im Treiber auf, während der Befehl verarbeitet wurde. |
unknown method | 405 Method Not Allowed |
Der angeforderte Befehl passte zu einer bekannten URL, jedoch nicht zu einer Methode für diese URL. |
unsupported operation | 500 Internal Server Error |
Gibt an, dass ein Befehl, der richtig ausgeführt werden sollte, aus irgendeinem Grund nicht unterstützt werden kann. |