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 und einer JSON-Nutzlast dargestellt, die Details des Fehlers enthält.

Nutzlast

Das Fehlerobjekt ist ein JSON-Objekt, das drei und manchmal vier Felder enthält:

error

Fehlertyp.

message

Menschlich lesbare Beschreibung des Fehlers.

stacktrace

Stacktrace-Bericht der aktiven Stackframes zum Zeitpunkt des Fehlers.

data (optional)

Beliebige und implementierungsspezifische Daten, die nützlich sein können, um dem Benutzer angezeigt zu werden.

Viele Treiber fügen den Text der Benutzeraufforderung hinzu, wenn sie auf einen Fehler vom Typ unerwarteter geöffneter Alarm stoßen.

Beispiel

Beispielsweise würde ein GET Anfrage an /session/1234/url, wobei 1234 eine falsche Sitzung ist, eine Antwort mit dem 404 Not Found Status und folgendem Inhalt zurückgeben:

json
{
  "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. Insbesondere ist dies üblich, wenn eine Benutzeraufforderung, wie etwa window.alert, nach der Ausführung Ihrer vorherigen WebDriver-Befehlsanfrage einen modalen Dialog geöffnet hat.

Da sowohl WebDriver als auch die JavaScript-Ausführung durch einen solchen Dialog gestoppt werden, sehen wir einen unerwarteten offenen Alarm Fehler in der nachfolgenden Antwort:

json
{
  "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 Objektrepräsentation dargestellt werden. In Python wird er als WebDriverException, in Node.js als WebDriverError und in Java ebenfalls als WebDriverException dargestellt.

Fehlerübersichtstabelle

Fehlertyp HTTP-Statuscode Beschreibung
Elementklick abgefangen 400 Bad Request Der Element-Klick Befehl konnte nicht ausgeführt werden, da das Element, das die Events empfängt, das angeforderte angeklickte Element verdeckt.
Element nicht interagierbar 400 Bad Request Ein Befehl konnte nicht ausgeführt werden, da das Element weder zeiger- noch tastaturinteragierbar ist.
unsicheres Zertifikat 400 Bad Request Die Navigation führte dazu, dass der Benutzeragent auf eine Zertifikatwarnung stieß, was normalerweise die Folge 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 Elementzustand 400 Bad Request Ein Befehl konnte nicht ausgeführt werden, da das Element in einem ungültigen Zustand ist, z.B. beim Versuch, ein Clear Element zu löschen, das nicht sowohl editierbar als auch zurücksetzbar ist.
ungültiger Selektor 400 Bad Request Ein Element-Abrufbefehlt wendete eine unbekannte Selektorstrategie an.
ungültige Sitzungs-ID 404 Not Found Die angegebene Sitzungs-ID wird nicht erkannt, d.h. die Sitzung existiert entweder nicht oder sie ist nicht aktiv. Beachten Sie, dass eine gelöschte Sitzung nicht wiederverwendet werden kann.
JavaScript-Fehler 500 Internal Server Error Ein Fehler trat beim Ausführen des vom Benutzer bereitgestellten JavaScripts auf.
Ziel außerhalb der Grenzen verschieben 500 Internal Server Error Das Ziel für die Mausinteraktion befindet sich nicht im Ansichtsfenster des Browsers und kann nicht in dieses Ansichtsfenster gebracht werden.
kein solches Alarm 404 Not Found Ein Versuch wurde unternommen, auf eine Benutzeraufforderung zuzugreifen, wenn keine geöffnet war.
kein solches Cookie 404 Not Found Kein Cookie, das mit dem gegebenen Pfadnamen übereinstimmt, wurde unter den Cookies des aktuellen Dokuments gefunden.
kein solches Element 404 Not Found Ein Element konnte auf der Seite nicht mit den angegebenen Suchparametern 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.
Skript-Timeout 408 Request Timeout Ein Skript wurde nicht ausgeführt, 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 angegebenen Fähigkeiten für den Start der Sitzung nicht übereinstimmten.
veraltete Elementreferenz 404 Not Found Ein Befehl schlug fehl, weil das referenzierte Element nicht mehr im DOM angehängt ist.
Timeout 408 Request Timeout Eine Operation wurde nicht abgeschlossen, bevor das Timeout abgelaufen ist.
nicht in der Lage, Cookie zu setzen 500 Internal Server Error Ein Befehl, um den Wert eines Cookies zu setzen, konnte nicht erfüllt werden.
Bildschirm konnte nicht erfasst werden 500 Internal Server Error Eine Bildschirmaufnahme war nicht möglich.
unerwartetes offenes Alarm 500 Internal Server Error Ein modaler Dialog war geöffnet und blockierte diese Operation.
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 auf, während er den Befehl verarbeitete.
unbekannte Methode 405 Method Not Allowed Der angeforderte Befehl passte zu einer bekannten URL, aber nicht zu einer Methode für diese URL.
nicht unterstützte 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.

Siehe auch