Comment gérer les conditions attendues en sélénium

Comment gérer les conditions attendues en sélénium

Les erreurs arrivent de façon inattendue et peuvent perturber le flux d'exécution normal. C'est quelque chose que chaque programmeur ou testeur fait face à un moment ou à l'autre tout en codant et en testant. La devise principale des testeurs est de déboguer l'erreur et de la résoudre. Dans cet article, nous comprendrons quelles exceptions sont en sélénium et comment les gérer. Après cela, nous verrons un aperçu de la hiérarchie de l'exception. Nous parlerons également des types d'exceptions et de la différence entre les exceptions vérifiées et incontrôlées, et la syntaxe de base de la manipulation.

Qu'est-ce que la gestion des exceptions?

Une exception est un événement lors d'une exécution programmée qui empêche les instructions de suivre le flux régulier du programme. Pour le dire dans l'autre sens, tout ce qui fait que tout votre cas de test s'arrête pendant sa course est connu comme une exception. Quand on se produit, l'application s'arrête et un objet d'exception est produit. Après une exception, le programme recherche quelqu'un pour le gérer. De nombreuses informations de débogage sont fournies par l'objet exception. En conséquence, vous verrez les différentes erreurs tout en travaillant avec le sélénium webdriver en fonction du code que vous écrivez. Parfois, le même code fonctionne bien tandis que les autres ne le font pas. Lorsque vous exécutez vos scripts, vous pouvez rencontrer quelques exceptions différentes. Par conséquent, chaque fois que vous créez un script, vous vous efforcez de fournir la plus haute qualité de code, donc si un premier problème se produit, il crée et lance une exception et enfin le gérer.

Hiérarchie d'exception

Des circonstances exceptionnelles devraient être capturées par l'application utilisateur en utilisant cette classe. Une autre branche, comme l'erreur, est utilisée par les autres systèmes d'exécution Java pour indiquer les erreurs qui y sont associées. Fondamentalement, sous des exceptions, il existe deux types d'exceptions: l'un est vérifié et l'autre n'est pas contrôlé. Voyons la différence entre ces deux exceptions: Exceptions vérifiées et incontrôlées.

Une exception vérifiée signifie que c'est une exception qui est. L'exception non contrôlée se produit pendant l'exécution même si le compilateur l'a vérifié pendant la compilation. Les exceptions vérifiées sont essentiellement appelées exceptions de temps de compilation tandis que les exceptions incontrôlées sont appelées exceptions d'exécution. Pour comprendre l'exception vérifiée, le programmeur doit gérer cette exception pour maintenir le flux d'exécution normal. Tandis que les exceptions d'exécution peuvent être ignorées et qu'il n'y aura pas beaucoup de différence dans le flux d'exécution du programme. C'est la principale différence entre les exceptions vérifiées et non contrôlées.

Exceptions de classe

public static void main (String args [])
essayer

attraper (exception e)

C'est à quoi ressemble la structure de l'exception. Vous créez une classe et écrivez un bloc d'essai à l'intérieur de la méthode principale dans laquelle vous écrivez un code qui peut lever une exception. À l'intérieur du bloc de capture, vous écrivez le code qui doit exécuter ceci. Le code soulève une exception qui est incluse dans le bloc d'essai. Ainsi, le code lance une exception dans le bloc d'essai. Ensuite, pour continuer avec le flux d'exécution normal, il est géré dans le bloc de capture.

Types d'exceptions en sélénium

Il existe différents types d'exceptions qui sont mentionnées dans les éléments suivants:

WebDriveRexception

Si le pilote chromé est installé, mais vous essayez de mener une activité, une erreur se produit lorsque vous essayez de le faire. Cette exception est soulevée sur un pilote de Mozilla Firefox qui est un pilote Geeko.

NosuchementElementException

Cette exception est lancée lorsque le pilote Web ne trouve pas l'élément dans la structure du tambour. C'est-à-dire, si vous n'êtes pas en mesure de localiser un élément particulier, il n'est pas dit à aucune exception de ce type. C'est-à-dire, si cet élément n'est pas présent, c'est la raison pour laquelle il ne lance pas une telle exception d'élément.

essayer
conducteur.get («https: // abc.com / iframe ");
conducteur.findElement (par.id («timcd»)).Sendkeys (… .keyStosend: "Hello");
catch (notfoundException e)
système.dehors.printin («non trouvé»);
e.printStackTrace ();
;

Nous avons vu une exception «non trouvée» dans ce code. Tout d'abord, vous devez aller à l'URL. Ensuite, passez au cadre puis tapez quelque chose. Si vous ne changez pas et ne tapez pas directement dans un élément, il montre l'erreur «non trouvée» dans l'élément de capture.

NosuchFrameException

Si vous souhaitez effectuer une action qui bascule entre les cadres et que vous n'êtes pas en mesure de le faire parce que le cadre de l'enfant n'est pas présent ou que le cadre parent n'est pas en mesure de naviguer dans le cadre de l'enfant, aucune exception de ce type n'est soulevée dans de tels cas.

NoalertPresentexception

Cette erreur apparaît lorsque nous essayons d'effectuer une fonction qui est acceptée ou rejetée et n'est pas nécessaire à l'emplacement qui est nécessaire.

De même, nous avons une alerte JavaScript. Si nous ne cliquons pas sur l'alerte JavaScript, il n'y aura pas d'alerte dans ce cas. Si nous essayons de changer cette alerte, cela vous donne une notisertpresentException.

Timeatexception

Cette exception est lancée lorsqu'une commande ne termine pas la tâche dans un temps donné.

Voici les méthodes pour gérer une exception avec la syntaxe:

Essayez: il est utilisé pour spécifier un bloc où nous plaçons le code d'exception.

Essayer
// code est écrit ici
catch (exception_class_name)

Catch: ce bloc est utilisé pour gérer l'exception.

essayer
catch (exceptionname e1)
/// Catch Block Code

Lancer: c'est utilisé pour lancer une exception.

attraper (exception e)
Système.dehors.println («L'élément n'est pas présent.»);
lancer (e);

Lance: il est utilisé pour déclarer quelle est l'exception.

public static void main (String [] args)
lance InterruptedException

Enfin: il est utilisé pour exécuter le code crucial du programme.

essayer
//// Code critique ici
Catch (exception e1)
[/// Catch Block Code
enfin
//// Ce bloc de code est à exécuter

Méthodes pour gérer une exception avec des codes

Tout d'abord, nous créons une classe exceptionnelle.

classe publique ExceptionhandlingExample

Nous lançons d'abord le pilote Chrome pour lancer Google et naviguer sur un site Web particulier. Ensuite, nous utilisons le sommeil du point de fil pour dormir pendant 3000, soit trois millisecondes. Ensuite, nous trouvons un élément de nom qui est «faux.Cliquez sur". Maintenant, cet élément n'est pas présent, donc ce qu'il fait, c'est lancer une exception appelée «pas d'élément de ce type». Ensuite, après avoir exécuté le code, nous verrons le pilote Chrome lancé.

WebDriver myDriver = new ChromEdriver ();
mon chauffeur.get (https: // www.Google.com);
Fil.Sleep (3000);
mon chauffeur.findElement (par.nom («faux»)).Cliquez sur;

Rien ne s'est produit parce que l'exception est élevée ici. Comme nous pouvons le voir, il lance une exception en disant «aucun élément de ce type».

Maintenant, pour le gérer, nous utilisons le bloc d'essai et de capture. Dans le bloc d'essai, utilisez la commande suivante:

catch (NosuchelementException e)
Système.dehors.println («L'élément n'est pas présent.»);
Système.dehors.println («Salut»);

Système.dehors.println («Salut»);

Nous écrivons le code qui lance une exception. Ce code jette déjà une exception qu'aucun élément de ce type n'est trouvé. Dans le bloc d'essai, nous écrivons l'exception «pas d'élément de ce type». À l'intérieur, nous imprimons «l'élément n'est pas trouvé» et «bonjour». Encore une fois, en dehors du bloc d'essai, nous voulons vérifier si le flux d'exécution normal est transporté ou non. C'est pourquoi nous imprimons cette déclaration à l'extérieur du bloc. Après avoir exécuté le code, il ne lance pas l'exception. Il imprime «Hello» deux fois: la première fois est à l'intérieur du bloc de capture et la deuxième fois est à l'extérieur du bloc d'essai et de capture. Pour garantir que le flux normal de l'exécution n'est pas interrompu, c'est ainsi que nous pouvons gérer les exceptions:

Dans cet exemple, nous voyons la défaillance de l'état attendue et comment le gérer.

Liste li;
@Passer outre
public void performas (t acteur)
li = browsetheweb.AS (acteur).finadall (par.xpath ("// div [@ class = 'nav-fill'] // a [@ data-csa-c-type = 'link']"));
pour (int i = 0; i
Système.dehors.println ("- WebElementFacade Liste du nom du menu ####" + li.obtenir (i).getText ());

Après avoir exécuté ce code, nous obtenons le résultat où il imprime toutes les valeurs, mais le test échoue dans la fenêtre de sortie.

Maintenant, nous corrigeons cette erreur. Si nous bouclez plus d'une valeur avant d'imprimer sa valeur, nous devons vérifier si l'élément est affiché ou non ou si la valeur est affichée ou non. Ensuite, nous pouvons imprimer cette valeur. Dans ce cas, nous écrivons si le «Li. obtenir.La condition est affichée. C'est pour vérifier la condition. Ensuite, nous écrivons la déclaration d'impression. Après avoir exécuté le code, il lit toutes les valeurs. En conséquence, nous passons le test passé. Il lit toutes les valeurs et, par conséquent, nous passons le test.

Conclusion

Nous comprenons les conditions attendues en sélénium. Nous avons également discuté de toutes les exceptions vérifiées et incontrôlées au milieu de l'article. Nous avons discuté des types d'exceptions avec des exemples. Enfin, nous avons couvert comment gérer les exceptions avec des codes. Cet article contient tous les détails sur la gestion du sélénium et les circonstances prévues.