Tutoriel Selenium C #: Utilisation de l’attente implicite dans Selenium


Lors de la conception de scripts d’automatisation de test, il est impératif de prendre en compte tous les défis majeurs pouvant survenir lors de l’automatisation de test Selenium. Il existe certains scénarios où le script de test tente d’effectuer une opération sur un élément qui n’est pas chargé (ou pas encore visible) et le test échoue à cause de cela. Cela se produit lorsque les éléments Web de la page sont chargés dynamiquement via AJAX (JavaScript asynchrone et XML) et JavaScript ou tout autre framework frontal.

Pour résoudre ce problème, nous avons «Wait», qui est l’une des commandes les plus importantes et les plus utilisées dans l’automatisation des tests Selenium. Cela nous aide à nous fournir suffisamment de temps d’attente ou de pause dans l’exécution de notre script. De cette façon, vous vous assurez que nos scripts n’échouent pas lors des tests d’automatisation avec Selenium.

Dans cet article, nous parlerons de ce que sont les attentes Selenium, pourquoi sont-elles importantes et comment implémenter une attente implicite dans Selenium C # avec des exemples.

Quelles sont les attentes dans le sélénium?

Selenium WebDriver aurait un API de blocage. Il s’agit d’une bibliothèque hors processus qui indique au navigateur Web ce qui doit être fait exactement. D’autre part, la plate-forme Web a un caractère asynchrone. C’est la principale raison pour laquelle Selenium WebDriver ne suit pas l’état en temps réel du DOM (Document Object Model).

Des conditions de concurrence critique peuvent se produire dans un scénario où le développeur utilise une commande Selenium pour naviguer vers une URL (ou une page Web) particulière et obtient une erreur Aucun élément trouvé lors de la tentative de localisation de l’élément. Pour surmonter ces problèmes pouvant entraîner des conditions de concurrence entre le navigateur Web et le script WebDriver, le Classe WebDriverWait en sélénium C # peut être utilisé.

Attend au Sélénium permet de suspendre l’exécution du test pendant une durée spécifiée (idéalement en quelques secondes) pour résoudre les problèmes pouvant survenir en raison du décalage temporel. Le délai supplémentaire est un contre-mécanisme permettant de garantir que l’élément Web particulier est chargé avant toute action sur l’élément.

Pourquoi les «attentes» de sélénium sont-elles importantes?

Le front-end de la plupart des applications Web est construit sur JavaScript ou AJAX, en utilisant des cadres tels que React, Angular ou d’autres qui prennent un certain temps pour que les éléments Web se chargent entièrement sur le navigateur.

Lorsque Selenium rencontre des opérations sur des éléments Web en cours de chargement, il lance la ElementNotVisibleException. Les attentes de sélénium peuvent résoudre de tels problèmes.

Dans l’extrait de code, le scénario de test de notre didacticiel Selenium C # concerne la recherche de vol sur un site Web de réservation de vol, qui génère une «NoSuchElementException» lorsque l’opération de recherche est effectuée à l’aide du script d’automatisation de test Selenium.

Comme le chargement de la page n’est pas terminé, c’est-à-dire que la recherche de vols de la source à la destination est en cours, le script ne trouve pas le bouton “Réserver maintenant”. Il en résulte «NoSuchElementException» pour notre script d’automatisation de test Selenium.

Il existe différents types d’attente dans Selenium C #, à savoir: attente implicite, attente explicite et attente fluide. Dans ce didacticiel Selenium C #, nous allons couvrir l’attente implicite dans Selenium C #.

Que sont les attentes implicites dans le sélénium C #?

Nous allons maintenant de l’avant avec notre didacticiel Selenium C #. Certains développeurs utilisent la commande System.Threading.Thread.Sleep (msecs) pour suspendre l’exécution du thread en cours d’exécution pendant une durée spécifiée (spécifiée en millisecondes). L’utilisation de System.Threading.Thread.Sleep est considérée comme une mauvaise pratique. L’inconvénient de cette approche est que le Selenium WebDriver attend que l’élément Web soit trouvé ou non. L’utilisation de System.Threading.Thread.Sleep est considérée comme une mauvaise pratique.

Les lacunes de System.Threading.Thread.Sleep peuvent être surmontées en utilisant l’attente implicite dans Selenium C #. L’attente implicite dans Selenium arrête l’exécution du WebDriver pendant une durée spécifiée jusqu’à ce que l’élément Web souhaité se trouve sur la page.

Contrairement à System.Threading.Thread.Sleep, l’attente implicite dans Selenium n’attend pas la durée complète. L’attente implicite dans Selenium est également appelée attente dynamique. Si l’élément Web particulier est localisé avant l’expiration de la durée spécifiée, il procède à l’exécution de la ligne de code suivante dans l’implémentation.

Si l’élément Web particulier ne se trouve pas dans la durée, ElementNotVisibleException ou NoSuchElementException est levé. Par conséquent, l’attente implicite dans Selenium indique au Selenium WebDriver d’attendre une durée particulière (passée en paramètre), avant que l’exception ne soit levée.

L’avantage de l’utilisation de l’attente implicite dans Selenium C # est qu’elle s’applique à tous les éléments Web spécifiés dans le script d’automatisation de test Selenium jusqu’à ce que l’instance WebDriver (ou l’objet IWebDriver) soit active.

Syntaxe de l’attente implicite en sélénium C #

La valeur de temps par défaut pour l’attente implicite est zéro. Attend implicitement la présence de l’élément Web toutes les 500 millisecondes. Maintenant, pour aller plus loin dans notre didacticiel Selenium C #, nous passons aux fonctionnalités de l’attente implicite dans l’automatisation des tests Selenium.

Quand utiliser l’attente implicite dans le sélénium?

Bien qu’il existe différents types d’attente Selenium (attente explicite et attente fluide), certaines fonctionnalités clés différencient l’attente implicite dans Selenium des autres types d’attente.

une. L’attente implicite s’applique à tous les éléments Web du script de test

b. Il est idéal pour les scénarios de test lorsque nous sommes sûrs que les éléments Web seront chargés (ou visibles) dans une durée spécifiée

Exemple d’attente implicite en sélénium C #

Pour démontrer l’attente implicite dans Selenium C #, nous prenons le même exemple d’EaseMyTrip. La principale différence est que nous avons ajouté une attente implicite de 30 secondes.

Lorsqu’une attente implicite est ajoutée, une attente de 30 secondes est ajoutée pour localiser le bouton “Réserver maintenant”.

En raison de cette attente, le chargement de la page est terminé et nous procédons à la réservation des billets d’avion pour notre didacticiel Selenium C #.

Conclusion

Dans ce tutoriel Selenium C #, nous avons vu pourquoi l’attente implicite dans Selenium est nécessaire pour l’automatisation des tests Selenium. L’utilisation principale de l’attente implicite dans Selenium est d’ajouter un certain délai de chargement des éléments Web requis avant qu’une opération ne soit effectuée sur l’élément. Bon test!

Close Menu