Mostrando entradas con la etiqueta Playwright. Mostrar todas las entradas
Mostrando entradas con la etiqueta Playwright. Mostrar todas las entradas

martes, 15 de abril de 2025

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://automatizaciondefuncionales.blogspot.com/2024/01/esperar-que-un-elemento-tenga-texto.html

Esperar a que un elemento desaparezca en Playwright (Manual)

 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 nos retorna que ya no lo puede ver y sigue el proceso.

De esta manera tan simple podemos controlar y esperar que algunos controles que se resisten a seguir con las funciones normales que nos ofrece el framework se controlen.

Saludos.


Fuentes:

https://automatizaciondefuncionales.blogspot.com/2024/01/como-tener-un-condicional-en-playwright.html

Tiempo de espera muerto / estático / 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://automatizaciondefuncionales.blogspot.com/2024/01/tiempo-de-espera-muerto-explicito-en.html

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://automatizaciondefuncionales.blogspot.com/2024/02/como-hacer-click-un-elemento-escondido.html