{"id":1958,"date":"2023-11-24T15:05:36","date_gmt":"2023-11-24T14:05:36","guid":{"rendered":"https:\/\/ittester.sk\/sin-categorizar\/espera-implicita-y-explicita-en-selenio\/"},"modified":"2024-06-25T16:01:41","modified_gmt":"2024-06-25T14:01:41","slug":"espera-implicita-y-explicita-en-selenio","status":"publish","type":"post","link":"https:\/\/ittester.sk\/es\/sin-categorizar\/tutorial-de-selenio\/espera-implicita-y-explicita-en-selenio\/","title":{"rendered":"Espera impl\u00edcita y expl\u00edcita en Selenium"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u00cdndice<\/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\">\u00bfPor qu\u00e9 son necesarias las esperas en Selenium?<\/h2>\n\n<p>En la automatizaci\u00f3n de la interfaz de usuario, las esperas son necesarias porque algunos elementos se cargan de forma as\u00edncrona en la p\u00e1gina, de modo que despu\u00e9s de que se active un evento, la p\u00e1gina puede cargarse correctamente, pero algunos elementos pueden seguir descarg\u00e1ndose.<\/p>\n\n<p>Esto provoca una excepci\u00f3n elementNotFound al buscar un elemento. En estos casos nos queda utilizar Thread.sleep(), t. j. Espera est\u00e1tica, que detiene la ejecuci\u00f3n de la prueba durante un tiempo determinado y luego ejecuta el paso siguiente.<\/p>\n\n<p>Ya que Thread.sleep() esperar\u00e1 el tiempo especificado independientemente de si los elementos se muestran antes de ese tiempo. Por tanto, nunca se recomienda utilizar Thread.sleep() al automatizar la interfaz de usuario.<\/p>\n\n<p>Para evitarlo, Selenium proporciona distintos tipos de esperas, de las cuales las esperas Impl\u00edcitas y Expl\u00edcitas son las m\u00e1s utilizadas.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-implicitne-cakanie\">Espera impl\u00edcita<\/h2>\n\n<p>La espera por defecto se establece en la instancia del WebDriver cuando se utiliza y se aplica a todos los elementos web. Con la espera impl\u00edcita, el webdriver consulta el DOM para comprobar la disponibilidad del elemento web y espera hasta el tiempo m\u00e1ximo especificado antes de lanzar una excepci\u00f3n NoSuchElementException.<\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>WebDriver driver = nuevo 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>En el fragmento de c\u00f3digo anterior, el valor 20 especificado en el m\u00e9todo wait impl\u00edcito es el tiempo m\u00e1ximo en segundos que esperar\u00e1 el WebDriver antes de lanzar una excepci\u00f3n NoSuchElementException al buscar un WebElement.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-explicitne-cakanie\">Espera expl\u00edcita<\/h2>\n\n<p>A diferencia de la espera impl\u00edcita, la espera expl\u00edcita se aplica a cada elemento web. La espera expl\u00edcita define ciertas condiciones en las que una instancia de WebDriver espera antes de recuperar elementos Web o realizar acciones sobre ellos. Algunas de las condiciones m\u00e1s comunes especificadas en la espera expl\u00edcita son: elementToBeClickable, presenceOfElementLocated, etc.<\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>WebDriverWait wait = nuevo WebDriverWait(controlador, 15);<\/strong><\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>espera.hasta(ExpectedConditions.presenceOfElementLocated(ElementLocator));<\/strong><\/p>\n\n<p>Aqu\u00ed, la instancia WebDriver esperar\u00e1 hasta que se cumpla la condici\u00f3n especificada, es decir j. la presencia de un elemento localizado por ElementLocator con un tiempo m\u00e1ximo de espera de 15 segundos, transcurridos los cuales, si a\u00fan no se cumple la condici\u00f3n, lanza una excepci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En la automatizaci\u00f3n de la interfaz de usuario, las esperas (impl\u00edcitas, expl\u00edcitas) son necesarias porque algunos elementos se cargan de forma as\u00edncrona en la web.<\/p>\n","protected":false},"author":8,"featured_media":1961,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[39],"tags":[],"class_list":["post-1958","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial-de-selenio"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/comments?post=1958"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1958\/revisions"}],"predecessor-version":[{"id":1963,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1958\/revisions\/1963"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media\/1961"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media?parent=1958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/categories?post=1958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/tags?post=1958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}