Entradas

Mostrando las entradas etiquetadas como Playwright

Como hacer click a un elemento escondido en Playwright

Buenas lectores. En la mayoria de frameworks que se usan para automatizar pruebas funcionales encontramos funciones que nos permiten realizar click forzados, esto es necesario cuando un elemento se encuentra oculto y necesitamos ejecutarlo. Normalmente esto no debería funcionar así puesto que un usuario no puede ver elementos ocultos pero... a veces es nuestra magía para poder simular a nuestro usuario final (enredado lo sé). En todo caso, cuando necesitamos hacerlo usando js es cuando se complica un poco, sin embargo existe una funcion que simula el click y nos puede sacar de los apuros: page.getByTestId('#id').dispatchEvent("click"); Cuando necesitamos pulsar un botón y este se resista pero es visible, podemos usar el force: click("//button[contains(@id, 'secondaryDownload')]", { force: true }) Fuentes: https://stackoverflow.com/questions/70124342/playwright-force-click-on-hidden-element-does-not-work  

Tiempo de espera "muerto" explicito en Playwright

Buenas lectores. En ocasiones necesitamos esperar un tiempo específico debido a que no contamos con alguna referencia o elemento que nos facilite seguir con el proceso. En estos casos usamos tiempos muertos los cuales no son buenos, nadie los quiere pero algunas veces son necesarios. await page.waitForTimeout(1000); Cabe anotar que el tiempo es en milisegundos como casi en todas las herramientas, en este caso es equivalente a esperar 1 segundo. Es decir, si quieres que espere 2 segundos sería 2000, 3 segundos = 3000. Fuentes: https://stackoverflow.com/questions/74920905/how-to-give-fixed-wait-in-playwright-with-out-any-condition-like-we-had-in-cypre  

Como tener un condicional en Playwright en caso que siga aun presente un elemento

Buenas lectores. En este post vamos a observar dos cosas, la primera como hacer un condicional o ciclo para que la automatización espere hasta que un elemento ya no sea visible y adicional observaremos como realizar un control a una acción sin que se detenga nuestra automatización:   let visible = await page.locator('#btn').isVisible();     while (visible) {         try {     await page.locator('#btn').click({ timeout: 1000 });         } catch (error) {       console.error('El elemento no se encontró o no se pudo hacer clic en él.');     }     visible = await page.locator('#btn').isVisible();     console.log(visible);   }   Observamos lo siguiente: Almacenamos en la variable visible el valor booleando que nos retorna si es visible o no. Mientras es visible tratamos de dar un clic a un elemento, en caso que ya no sea visible por los milisegundos, al estar dentro del try...

Validar que se observa un elemento usando Playwrigth

Buenas lectores. Hoy vamos a revisar como esperar a que un elemento sea visible, en este framework es tan sencillo como lo siguiente: Declarando un objeto: var deleteGeofence = page . locator (" //span[@class='toast-message'] "); await expect ( deleteGeofence ). toBeVisible ({ timeout : 10000 });     De forma directa: await expect ( page . locator (" //span[@class='toast-message'] ")). toBeVisible ({ timeout : 10000 });     En ambos casos se observa que declaramos cuanto tiempo queremos esperar a que sea visible y nos marque error en caso que no lo encuentre. Saludos coordiales Fuentes: https://playwright.dev/docs/test-assertions https://stackoverflow.com/questions/77068325/expect-tobevisible-is-not-working-when-i-am-running-my-playwright-test  

Dar clic por coordenadas usando Playwright

Buenas lectores. Normalmente hacer un clic es de las tareas mas sencillas que existen en la automatización de pruebas, sin embargo, a medida que avanzan las tecnologías, también avanza la complejidad de ciertos sitios que en algún momento tendremos que enfrentar. En este caso vamos a revisar como hacer un clic por medio de coordenadas usando Playwright, como bien sabemos normalmente el click se encuentra asociado a un elemento web pero hay momentos en que no tenemos elementos y necesitamos pulsar algún lugar del sitio. En ese caso podemos usar lo siguiente:   await page . locator (' #map '). click ({ position : { x : 50 , y : 50 } }); En el caso anterior estamos enviando el elemento mapa y le estamos dando click sobre el. Recordemos que los mapas no nos permiten interactuar con ellos, no son elementos dentro del DOM así que nos toca ser muy creativos al momento de realizar nuestras automatizaciones. Espero les sirva de algo. Saludos coordiales. Fuentes: https://stackoverflow....

Esperar a que un elemento tenga texto Playwright desde javascript

Buenas tardes lectores. Voy a seguir publicando algunas cositas sobre Playwright, esto porque veo que es una gran herramienta para llevar de la mano junto a SerenityBDD. En esta ocasión vamos a revisar de una manera sencilla como podemos esperar el texto de un elemento y no seguir el proceso hasta que tengamos el valor: var idGeo : string | null = await page . textContent (' #div_map ');   console . log ( idGeo );   while ( idGeo === null || idGeo . length === 0 ) {     idGeofence = await page . textContent (' #div_map ');     console . log ( idGeofence );   } Se puede observar lo siguiente: Almacenamos de forma controlada el valor del texto que trae Playwright a la variable idGeo Luego comparamos de forma controlada que sea null o vacía Repetimos ciclo hasta que tengamos un valor y seguimos con la automatización. Es todo, sencillo y funcional. Recuerden que falta controlar el ciclo para que no sea infinito. Saludos cordiales. Fuentes: https://...