Entradas

Mostrando entradas de enero, 2024

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://...

Como presionar Enter en Java cuando usamos Selenium

Buenos días Lectores. En ocasiones nos encontramos con el limitante que se muestran algunos avisos en ventanas de windows y necesitamos "quitarlas", como sabemos Selenium tiene la limitación de que solo interactua con elementos del sitio web pero para interactuar con objetos fuera del DOM no es posible, en este caso queremos interactuar con un elemento fuera del navegador. Para poder solventar esto existen varias herramientas, sin embargo es bueno que recuerdes que cualquera de ellas se usa como última opción puesto que no tendremos ningún control sobre la ejecución del escenario en plena ejecución. En este caso vamos a comenzar usando la librería en java llamada ROBOT: try { Robot robot = new Robot () ; robot . keyPress ( KeyEvent . VK_ENTER ) ; robot . keyRelease ( KeyEvent . VK_ENTER ) ; robot . delay ( 1000 ) ; } catch ( AWTException a ){ a . printStackTrace () ; } En el ejemplo anterior estamos simulando un "enter" en e...