Ausnahmebehandlung in Selenium Webdriver (Typen)
⚡ Intelligente Zusammenfassung
Ausnahmebehandlung in Selenium WebDriver verhindert, dass ein fehlgeschlagener Befehl stoppt.ping ein kompletter Testlauf. Java try-catch, mehrere catch-Blöcke, throw, throws und schließlich gibt jedes Skript eine andere Möglichkeit zur Wiederherstellung.
Was ist eine Ausnahme?
Eine Ausnahme ist ein Fehler, der während der Ausführung eines Programms auftritt. Wenn ein Programm läuft, erzeugt die Programmiersprache eine Ausnahme, die behandelt werden muss, da das Programm sonst abstürzt.
Die Ausnahme weist darauf hin, dass das Ereignis zwar auftreten kann, aber selten vorkommt. Kann eine Methode die Ausnahme nicht behandeln, wird sie an die aufrufende Funktion weitergegeben. Java, was die meisten antreibt Selenium Bei WebDriver-Suites werden alle Ausnahmen ungeprüft ausgeführt, sodass der Compiler Sie nie dazu zwingt, sie abzufangen – ein unbehandelter Fehler tritt erst zur Laufzeit auf.
Arten von Ausnahmen in Selenium WebTreiber
WebDriverException ist die Basisklasse der Hierarchie, von der alle darunterliegenden Ausnahmen erben. Die Tabelle listet alle 41 möglichen Ausnahmen sowie die jeweilige Auslösebedingung auf.
| # | Exception | Wenn es geschieht |
|---|---|---|
| 1 | ElementNotVisibleException | Ein vorhandenes Element im DOM hat eine Funktion, die als ausgeblendet definiert ist. |
| 2 | ElementNotSelectableException | Das Element befindet sich im DOM, kann aber nicht ausgewählt werden, daher ist eine Interaktion unmöglich. |
| 3 | NoSuchElementException | Das Element konnte mit dem Locator geliefert. |
| 4 | NoSuchFrameException | Das Rahmen Das Ziel, zu dem gewechselt werden soll, existiert nicht. |
| 5 | NoAlertPresentException | Ein Wechsel zu einem alarmieren Wird ausgeführt, wenn keine Warnung angezeigt wird. |
| 6 | NoSuchWindowException | Das Fenster, zu dem gewechselt werden soll, existiert nicht. |
| 7 | StaleElementReferenceException | Das Web-Element ist vom aktuellen Element getrennt. DOM. |
| 8 | SessionNotFoundException | Der WebDriver wird aktiv, nachdem Sie den Browser beendet haben. |
| 9 | TimeoutException | Ein Befehl konnte nicht rechtzeitig ausgeführt werden – beispielsweise wurde das gesuchte Element innerhalb der Wartezeit nicht gefunden. |
| 10 | WebDriverException | Basisklasse der anderen WebDriver-Ausnahmen; wird auch ausgelöst, wenn der WebDriver direkt nach dem Schließen des Browsers aktiv wird. |
| 11 | ConnectionClosedException | Es liegt eine Unterbrechung im Treiber vor. |
| 12 | ElementClickInterceptedException | Das Element, das die Ereignisse empfängt, verdeckt das Element, auf das geklickt werden soll. |
| 13 | ElementNotInteractableException | Das Element ist im DOM vorhanden, aber es ist unmöglich, mit ihm zu interagieren. |
| 14 | ErrorInResponseException | Bei der Interaktion mit dem/der/dem ist ein Fehler aufgetreten. Firefox Erweiterung oder den Remote-Treiberserver. |
| 15 | ErrorHandler.UnknownServerException | Wird als Platzhalter verwendet, wenn der Server einen Fehler ohne Stacktrace zurückgibt. trace. |
| 16 | ImeActivationFailedException | Die Aktivierung der IME-Engine ist fehlgeschlagen. |
| 17 | ImeNotAvailableException | IME-Unterstützung ist nicht verfügbar. |
| 18 | Unsicheres Zertifikat | Die Navigation führte dazu, dass der Benutzeragent auf eine Fehlermeldung stieß. Zertifikatwarnungwas durch ein ungültiges oder abgelaufenes TLS-Zertifikat verursacht werden kann. |
| 19 | InvalidArgumentException | Das Argument gehört nicht zum erwarteten Typ. |
| 20 | InvalidCookieDomainException | A Plätzchen wird unter einer anderen Domäne anstelle der aktuellen hinzugefügt URL. |
| 21 | InvalidCoordinatesException | Die übereinstimmende Interaktionsoperation ist ungültig. |
| 22 | InvalidElementStateException | Der Befehl kann nicht abgeschlossen werden, da das Element ungültig ist. |
| 23 | InvalidSessionIdException | Die angegebene Sitzungs-ID gehört nicht zu den aktiven Sitzungen, sie existiert also nicht oder ist inaktiv. |
| 24 | UngültigerWechsel zuTargetException | Das Zielfenster oder der Zielrahmen, zu dem gewechselt werden soll, existiert nicht. |
| 25 | JavascriptException | Bei der Ausführung ist ein Fehler aufgetreten. JavaVom Benutzer bereitgestelltes Skript. |
| 26 | JsonException | Die Sitzung wird angefordert, wenn keine Sitzung erstellt wurde. |
| 27 | NoSuchAttributeException | Das Attribut eines Elements konnte nicht gefunden werden. |
| 28 | BewegungTargetOutOfBoundsException | Das der ActionChains move()-Methode übergebene Ziel ist ungültig – beispielsweise außerhalb des Dokuments. |
| 29 | NoSuchContextException | ContextAware, das Tests auf mobilen Geräten durchführt, kann den angeforderten Kontext nicht finden. |
| 30 | NoSuchCookieException | Unter den Cookies des aktuell angezeigten Dokuments wurde kein Cookie gefunden, der dem angegebenen Pfadnamen entspricht. |
| 31 | NotFoundException | Eine Unterklasse von WebDriverException, die ausgelöst wird, wenn ein Element im DOM nicht existiert. |
| 32 | RemoteDriverServerException | Der Server antwortet nicht, da die beschriebenen Fähigkeiten nicht ausreichen. |
| 33 | ScreenshotException | Es ist nicht möglich, einen Bildschirm aufzunehmen. |
| 34 | SessionNotCreatedException | Es konnte keine neue Sitzung erstellt werden. |
| 35 | UnableToSetCookieException | Ein Treiber kann kein Cookie setzen. |
| 36 | UnerwarteteTagNameException | Eine Supportklasse hat das erwartete Web-Element nicht erhalten. |
| 37 | Unbehandelte Ausnahme | Es liegt eine Warnung vor, aber WebDriver ist nicht in der Lage, die Warnungsoperation durchzuführen. |
| 38 | UnerwarteteAlarm-Ausnahme | Es erscheint eine unerwartete Warnmeldung. |
| 39 | UnknownMethodException | Der angeforderte Befehl stimmt mit einem bekannten überein. URL aber keine Methode für diesen speziellen Fall URL. |
| 40 | UnreachableBrowserException | Der Browser lässt sich nicht öffnen oder er ist aus irgendeinem Grund abgestürzt. |
| 41 | UnsupportedCommandException | Der Remote-WebDriver sendet nicht wie erwartet gültige Befehle. |
Drei Faktoren dominieren das tägliche Debugging: NoSuchElementException bedeutet, dass ein Fehler aufgetreten ist XPath oder ein Element, das nicht gerendert wurde; eine TimeoutException bedeutet, dass die Wartezeit zu kurz war. AJAX Antwort und StaleElementReferenceException folgt dynamisch Neu rendern.
Wie man Ausnahmen behandelt in Selenium
Hier sind die Standardkonstrukte zur Behandlung von Ausnahmen in Selenium WebDriver. Jeder ist einfach JavaEs funktioniert also in jeder Umgebung. WebDriver-Skript ohne zusätzliche Bibliotheken.
Schritt 1) Versuchen und fangen
Diese Methode kann Ausnahmen mithilfe einer Kombination der Schlüsselwörter `try` und `catch` abfangen. Der `try`-Befehl markiert den Beginn des Blocks, und `catch` wird am Ende des `try`-Blocks platziert, wo es die Ausnahme behandelt.
try { // Code } catch (Exception e) { // Code for Handling exception }
Schritt 2) Mehrere Catch-Blöcke
Es gibt verschiedene Arten von Ausnahmen, und ein einzelner Codeblock kann mehrere davon auslösen. Mithilfe mehrerer Catch-Blöcke können Sie jede Ausnahmeart separat mit eigenem Code behandeln. Sie können mehr als zwei Catch-Blöcke verwenden, und es gibt keine Begrenzung hinsichtlich ihrer Anzahl.
try { //Code } catch (ExceptionType1 e1) { //Code for Handling Exception 1 } catch (ExceptionType2 e2) { //Code for Handling Exception 2 }
Schritt 3) Werfen
Wenn Sie eine Ausnahme auslösen möchten, übergibt das Schlüsselwort `throw` diese zur Laufzeitbehandlung. Verwenden Sie `throw`, wenn Sie eine Ausnahme weitergeben, anstatt sie in der aktuellen Methode zu behandeln.
public static void anyFunction() throws Exception{ try { // write your code here } catch (Exception b) { // Do whatever you want to perform // Throw the Exception back to the system throw(b); } }
Schritt 4) Mehrere Ausnahmen
In der throws-Klausel können verschiedene Ausnahmen aufgeführt werden.
public static void anyFunction() throws ExceptionType1, ExceptionType2{ try { // write your code here } catch (ExceptionType1 e1) { // Code to handle exception 1 } catch (ExceptionType2 e2) { // Code to handle exception 2 }
Schritt 5) Endlich
Das Schlüsselwort `finally` erzeugt einen Block unterhalb des `try`-Blocks. Er wird unabhängig davon ausgeführt, ob eine Ausnahme aufgetreten ist, weshalb er sich zum Schließen eines Treibers oder zum Freigeben eines Dateihandles eignet.
try { //Code } catch (ExceptionType1 e1) { //Catch block } catch (ExceptionType2 e2) { //Catch block } catch (ExceptionType3 e3) { //Catch block } finally { //The finally block always executes. }
Methoden zur Anzeige von Ausnahmeinformationen
Sobald eine Ausnahme abgefangen wird, enthält das Objekt selbst die Diagnosedetails. Sie können diese mit den folgenden Methoden anzeigen:
| Methodik | Was es berichtet |
|---|---|
| printStackTrace() | Gibt den Stapel aus trace, der Name der Ausnahme und weitere nützliche Beschreibungen. |
| toString () | Gibt eine Textnachricht zurück, die den Namen und die Beschreibung der Ausnahme enthält. |
| getMessage () | Zeigt die Beschreibung der Ausnahme separat an. |
Kombiniert man diese mit einem Screenshot, der innerhalb des Catch-Blocks aufgenommen wurde, zeigt ein fehlgeschlagener Durchlauf sowohl, was schiefgelaufen ist, als auch, wie die Seite aussah.
