{"id":2902,"date":"2023-11-24T15:05:36","date_gmt":"2023-11-24T14:05:36","guid":{"rendered":"https:\/\/ittester.sk\/non-classifiee\/attente-implicite-et-explicite-dans-selenium\/"},"modified":"2024-10-22T14:15:14","modified_gmt":"2024-10-22T12:15:14","slug":"attente-implicite-et-explicite-dans-selenium","status":"publish","type":"post","link":"https:\/\/ittester.sk\/fr\/tests-automatises\/tutoriel-selenium\/attente-implicite-et-explicite-dans-selenium\/","title":{"rendered":"Attente implicite et explicite dans Selenium"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Table des mati\u00e8res<\/h2>\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-preco-sa-v-selenium-vyzaduje-cakanie-waits\">Pre\u010do sa v Selenium vy\u017eaduje \u010dakanie (waits)?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-implicitne-cakanie\">Implicitn\u00e9 \u010dakanie<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-explicitne-cakanie\">Explicitn\u00e9 \u010dakanie<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-preco-sa-v-selenium-vyzaduje-cakanie-waits\">Pourquoi les attentes sont-elles n\u00e9cessaires dans Selenium ?<\/h2>\n\n<p>Dans l&rsquo;automatisation de l&rsquo;interface utilisateur, les attentes sont n\u00e9cessaires parce que certains \u00e9l\u00e9ments sont charg\u00e9s de mani\u00e8re asynchrone sur la page, de sorte qu&rsquo;apr\u00e8s le d\u00e9clenchement d&rsquo;un \u00e9v\u00e9nement, la page peut \u00eatre charg\u00e9e avec succ\u00e8s, mais certains \u00e9l\u00e9ments peuvent encore \u00eatre d\u00e9charg\u00e9s.<\/p>\n\n<p>Cela provoque une exception \u00ab\u00a0elementNotFound\u00a0\u00bb lors de la recherche d&rsquo;un \u00e9l\u00e9ment. Dans ce cas, nous devons utiliser Thread.sleep(), t. j. L&rsquo;attente statique, qui interrompt l&rsquo;ex\u00e9cution du test pendant une dur\u00e9e d\u00e9termin\u00e9e, puis ex\u00e9cute l&rsquo;\u00e9tape suivante.<\/p>\n\n<p>Puisque Thread.sleep() attendra le temps sp\u00e9cifi\u00e9, que les \u00e9l\u00e9ments soient affich\u00e9s ou non avant ce d\u00e9lai. Par cons\u00e9quent, l&rsquo;utilisation de Thread.sleep() n&rsquo;est jamais recommand\u00e9e lors de l&rsquo;automatisation de l&rsquo;interface utilisateur.<\/p>\n\n<p>Pour \u00e9viter cela, Selenium propose diff\u00e9rents types d&rsquo;attente, parmi lesquels les attentes implicites et explicites sont les plus couramment utilis\u00e9es.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-implicitne-cakanie\">Attente implicite<\/h2>\n\n<p>L&rsquo;attente par d\u00e9faut est d\u00e9finie pour l&rsquo;instance WebDriver lorsqu&rsquo;elle est utilis\u00e9e et s&rsquo;applique \u00e0 tous les \u00e9l\u00e9ments web. Avec l&rsquo;attente implicite, le pilote Web interroge le DOM pour v\u00e9rifier la disponibilit\u00e9 de l&rsquo;\u00e9l\u00e9ment Web et attend la dur\u00e9e maximale sp\u00e9cifi\u00e9e avant de lever une exception NoSuchElementException.<\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>WebDriver driver = new FirefoxDriver() ;<\/strong><\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS) ;<\/strong><\/p>\n\n<p>Dans l&rsquo;extrait de code ci-dessus, la valeur 20 sp\u00e9cifi\u00e9e dans la m\u00e9thode d&rsquo;attente implicite est le temps maximum en secondes que le WebDriver attendra avant de lancer une exception NoSuchElementException lors de la recherche d&rsquo;un WebElement.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-explicitne-cakanie\">Attente explicite<\/h2>\n\n<p>Contrairement \u00e0 l&rsquo;attente implicite, l&rsquo;attente explicite s&rsquo;applique \u00e0 chaque \u00e9l\u00e9ment web. L&rsquo;attente explicite d\u00e9finit certaines conditions dans lesquelles une instance de WebDriver attend avant de r\u00e9cup\u00e9rer des \u00e9l\u00e9ments Web ou d&rsquo;effectuer des actions sur ceux-ci. Parmi les conditions les plus courantes sp\u00e9cifi\u00e9es dans l&rsquo;attente explicite, citons : elementToBeClickable, presenceOfElementLocated, etc.<\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>WebDriverWait wait = new WebDriverWait(driver, 15) ;<\/strong><\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>wait.until(ExpectedConditions.presenceOfElementLocated(ElementLocator)) ;<\/strong><\/p>\n\n<p>Ici, l&rsquo;instance WebDriver attendra jusqu&rsquo;\u00e0 ce que la condition sp\u00e9cifi\u00e9e soit remplie, c&rsquo;est-\u00e0-dire j. la pr\u00e9sence d&rsquo;un \u00e9l\u00e9ment localis\u00e9 par ElementLocator avec un temps d&rsquo;attente maximum de 15 secondes, apr\u00e8s quoi, si la condition n&rsquo;est toujours pas remplie, il l\u00e8ve une exception.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans l&rsquo;automatisation de l&rsquo;interface utilisateur, les attentes (implicites, explicites) sont n\u00e9cessaires car certains \u00e9l\u00e9ments sont charg\u00e9s de mani\u00e8re asynchrone sur le web.<\/p>\n","protected":false},"author":8,"featured_media":2903,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[53],"tags":[],"class_list":["post-2902","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriel-selenium"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/comments?post=2902"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2902\/revisions"}],"predecessor-version":[{"id":2905,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2902\/revisions\/2905"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media\/2903"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media?parent=2902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/categories?post=2902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/tags?post=2902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}