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.
