Como trabajar con iframes manteniendo la arqutiectura de screenplay

Buenas lectores.

A estas alturas alguno en determinado momento le ha sacado tiempo un iframe, estas pequeñas piedras en el zapato que nos diculta la fluidez de interactuar con los elementos de la web. En la mayoria de veces que me he enfrentado con los iframes ha sido en sitios algo viejos y por lo tanto las automatizaciones estaban desarrollada bajo el page object model. Actualmente es mucho mas fluido trabajar con screnplay es por eso que hoy vamos a revisar como lo podemos hacer.

Lo primero es determinar que todo en screenplay lo trabajamos por Targets, a diferencia de page object model que todo son WebElementFacade que en sí es casi un WebElement pero con esteroides.

Para crear nuestro iframe como target usamos lo siguiente:

private static IFrame PROFILE_MARCO = IFrame.withPath(By.id("ib-iframe-messaging"));

y para buscar un elemento dentro del iframe


public static final Target TITTLE_MARCO = Target.the("icon Marco over map").inIFrame(PROFILE_MARCO).locatedBy(".ib-widget-title");


Esto nos sirve para buscar dentro del iframe diferentes elementos (targets), sin embargo si solo buscamos un elemento en particular, lo podemos hacer directo:


public static final Target TITTLE_MARCO = Target.the("icon Marco over map").inIFrame(IFrame.withPath(By.id("ib-iframe-messaging"))).locatedBy(".ib-widget-title");


Y listo, con este solo target ya accedemos a nuestro elemento dentro de un iframe.

Fuentes:

https://github.com/serenity-bdd/serenity-core/blob/main/serenity-screenplay-webdriver/src/test/java/net/serenitybdd/screenplay/webtests/pages/BankAccountEntry.java





















Comentarios

Entradas populares de este blog

Tiempo de espera "muerto" explicito en Playwright

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

Subir mi proyecto local a Azure repos