Gestion des exceptions dans Selenium Pilote Web (Types)
⚡ Résumé intelligent
Gestion des exceptions dans Selenium WebDriver empêche l'arrêt d'une commande ayant échouéping un essai complet. Java try-catch, blocs catch multiples, throw, throws et enfin chacun offre à un script une manière différente de se rétablir.

Qu'est-ce qu'une exception ?
Une exception est une erreur qui survient lors de l'exécution d'un programme. Pendant l'exécution d'un programme, le langage de programmation génère une exception qui doit être gérée, faute de quoi le programme plante.
L'exception indique que, bien que l'événement puisse se produire, ce type d'événement est rare. Lorsqu'une méthode ne peut pas gérer l'exception, celle-ci est transmise à sa fonction appelante. Java, ce qui conduit la plupart Selenium Dans les suites WebDriver, chaque exception n'est pas vérifiée, le compilateur ne vous oblige donc jamais à la gérer ; une défaillance non gérée n'apparaît qu'à l'exécution.
Types d'exceptions dans Selenium pilote web
WebDriverException est la classe de base de la hiérarchie, et toutes les exceptions de niveau inférieur en héritent. Le tableau répertorie les 41 exceptions possibles, ainsi que la condition qui les déclenche.
| # | Exception | Quand cela se produit |
|---|---|---|
| 1 | ElementNotVisibleException | Un élément existant dans le DOM possède une caractéristique définie comme cachée. |
| 2 | Exception d'élément non sélectionnable | L'élément est présent dans le DOM mais ne peut pas être sélectionné, l'interaction est donc impossible. |
| 3 | NoSuchElementException | L'élément est introuvable. localisateur fourni. |
| 4 | NoSuchFrameException | Le cadre La cible vers laquelle basculer n'existe pas. |
| 5 | NoAlertPresentExceptionNoAlertPresentException | Un passage à un alerter S'exécute lorsqu'aucune alerte n'est présentée. |
| 6 | NoSuchWindowExceptionNoSuchWindowException | La fenêtre cible vers laquelle basculer n'existe pas. |
| 7 | Exception de référence d'élément obsolète | L'élément web est détaché du courant DOM. |
| 8 | Exception SessionNotFound | Le WebDriver continue d'agir après la fermeture du navigateur. |
| 9 | TimeoutException | Une commande n'a pas pu être exécutée à temps — par exemple, l'élément recherché n'a pas été trouvé pendant le délai d'attente. |
| 10 | WebDriverException | Classe de base des autres exceptions WebDriver ; également levée lorsque WebDriver agit juste après la fermeture du navigateur. |
| 11 | Exception de connexion fermée | Il y a une déconnexion au niveau du pilote. |
| 12 | Exception interceptée par clic d'élément | L'élément qui reçoit les événements masque l'élément demandé par le clic. |
| 13 | Exception ElementNotInteractable | L'élément est présent dans le DOM, mais il est impossible d'interagir avec lui. |
| 14 | Exception d'erreur dans la réponse | Une erreur s'est produite lors de l'interaction avec le Firefox extension ou le serveur de pilotes distant. |
| 15 | Gestionnaire d'erreurs.Exception de serveur inconnue | Utilisé comme espace réservé lorsque le serveur renvoie une erreur sans pile d'appels. trace. |
| 16 | Exception d'échec d'activation de l'IME | L'activation du moteur IME a échoué. |
| 17 | Exception ImeNotAvailable | La prise en charge IME n'est pas disponible. |
| 18 | Exception de certificat non sécurisé | La navigation a fait en sorte que l'agent utilisateur rencontre un problème. avertissement de certificat, ce qui peut être causé par un certificat TLS invalide ou expiré. |
| 19 | Exception d'argument invalide | L'argument n'appartient pas au type attendu. |
| 20 | Exception de domaine de cookie invalide | A gâteau est ajouté sous un domaine différent de celui actuel URL. |
| 21 | Exception InvalidCoordinates | L'opération d'interaction correspondante n'est pas valide. |
| 22 | Exception d'état d'élément invalide | La commande ne peut pas être terminée car l'élément est invalide. |
| 23 | Exception InvalidSessionId | L'identifiant de session fourni ne figure pas parmi les sessions actives ; par conséquent, cette session n'existe pas ou est inactive. |
| 24 | InvalidSwitchToTargetException | La fenêtre ou le cadre cible vers lequel basculer n'existe pas. |
| 25 | JavascriptException | Une erreur s'est produite lors de l'exécution JavaScript donné par l'utilisateur. |
| 26 | Exception Json | La session est demandée alors qu'elle n'est pas encore créée. |
| 27 | Exception NoSuchAttribute | L'attribut de l'élément est introuvable. |
| 28 | MoveTargetException hors limites | La cible fournie à la méthode move() d'ActionChains n'est pas valide — par exemple, elle se trouve en dehors du document. |
| 29 | NoSuchContextException | ContextAware, qui effectue des tests sur appareils mobiles, ne trouve pas le contexte demandé. |
| 30 | NoSuchCookieException | Aucun cookie correspondant au nom de chemin indiqué n'a été trouvé parmi les cookies du document actuellement consulté. |
| 31 | NotFoundException | Une sous-classe de WebDriverException, levée lorsqu'un élément du DOM n'existe pas. |
| 32 | Exception RemoteDriverServer | Le serveur ne répond pas car les capacités décrites ne sont pas appropriées. |
| 33 | Exception de capture d'écran | Il n'est pas possible de capturer un écran. |
| 34 | Exception SessionNotCreated | Impossible de créer une nouvelle session. |
| 35 | Exception Impossible de définir le cookie | Un pilote ne peut pas définir de cookie. |
| 36 | Exception UnexpectedTagName | Une classe de support n'a pas reçu d'élément web comme prévu. |
| 37 | Exception d'alerte non gérée | Une alerte a été émise, mais WebDriver n'est pas en mesure d'effectuer l'opération d'alerte. |
| 38 | Exception d'alerte inattendue | Une alerte inattendue apparaît. |
| 39 | Exception de méthode inconnue | La commande demandée correspond à une commande connue URL mais pas de méthode pour cela précisément URL. |
| 40 | Exception de navigateur inaccessible | Le navigateur ne peut pas être ouvert, ou il a planté pour une raison quelconque. |
| 41 | Exception de commande non prise en charge | Le WebDriver distant n'envoie pas de commandes valides comme prévu. |
Trois erreurs dominent le débogage quotidien : NoSuchElementException signifie une erreur XPath ou un élément qui n'a pas été rendu, TimeoutException signifie que le délai d'attente est trop court pour un AJAX réponse, et StaleElementReferenceException suit une Dynamic refaire le rendu.
Comment gérer les exceptions dans Selenium
Voici les constructions standard pour la gestion des exceptions dans Selenium WebDriver. Chacun est simple Java, donc cela fonctionne dans n'importe quel Script WebDriver sans bibliothèques supplémentaires.
Étape 1) Essayez-attrapez
Cette méthode permet de gérer les exceptions grâce à une combinaison des mots-clés try et catch. La commande try marque le début du bloc, et catch est placée à la fin du bloc try, où elle résout l'exception.
try { // Code } catch (Exception e) { // Code for Handling exception }
Étape 2) Plusieurs blocs de capture
Il existe différents types d'exceptions, et un seul bloc de code peut en déclencher plusieurs. L'utilisation de plusieurs blocs `catch` permet de gérer chaque type séparément avec son propre code. Vous pouvez utiliser plus de deux blocs `catch`, et leur nombre est illimité.
try { //Code } catch (ExceptionType1 e1) { //Code for Handling Exception 1 } catch (ExceptionType2 e2) { //Code for Handling Exception 2 }
Étape 3) Lancer
Pour générer une exception, le mot-clé `throw` la transmet à la méthode en cours d'exécution afin qu'elle soit gérée. Utilisez `throw` lorsque vous transmettez une exception à une autre méthode au lieu de la résoudre dans la méthode courante.
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); } }
Étape 4) Plusieurs exceptions
Vous pouvez mentionner diverses exceptions dans la clause throws.
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 }
Étape 5) Enfin
Le mot-clé `finally` crée un bloc sous le bloc `try`. Ce bloc s'exécute qu'une exception se soit produite ou non, ce qui en fait l'endroit idéal pour fermer un pilote ou libérer un descripteur de fichier.
try { //Code } catch (ExceptionType1 e1) { //Catch block } catch (ExceptionType2 e2) { //Catch block } catch (ExceptionType3 e3) { //Catch block } finally { //The finally block always executes. }
Méthodes d'affichage des informations d'exception
Une fois l'exception interceptée, l'objet lui-même contient les informations de diagnostic. Vous pouvez utiliser les méthodes suivantes pour les afficher :
| Méthode | Ce que rapporte le rapport |
|---|---|
| printStackTrace () | Affiche la pile trace, le nom de l'exception et toute autre description utile. |
| toString () | Renvoie un message texte décrivant le nom et la description de l'exception. |
| getMessage () | Affiche la description de l'exception séparément. |
Associez ces éléments à une capture d'écran prise à l'intérieur du bloc catch, et une exécution ayant échoué montrera à la fois ce qui a dysfonctionné et à quoi ressemblait la page.
