Package giis.demo.descuento.it
Class PlaywrightUtil
java.lang.Object
giis.demo.descuento.it.PlaywrightUtil
Utilidades varias para uso en los tests con Playwright, equivalente a SeleniumUtil pero usando la API de
Playwright (https://playwright.dev/java/). Mantiene la misma estructura que SeleniumUtil para que se puedan
comparar ambas tecnologias; los comentarios resaltan unicamente las diferencias respecto de la version Selenium.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic com.microsoft.playwright.BrowsergetNewBrowser(com.microsoft.playwright.Playwright playwright) Lanza el navegador (Chromium) usado en estos tests teniendo en cuenta el fichero de propiedades, de forma analoga a SeleniumUtil.getNewDriver.static String[][]getTableContent(com.microsoft.playwright.Locator table) Equivalente con Playwright a SeleniumUtil.getTableContent: obtiene el contenido de una tabla como matriz de strings.private static String[][]listToStringMatrix(List<List<String>> irows, int maxcol) static voidtakeScreenshot(com.microsoft.playwright.Page page, String name) Toma una imagen de la vista actual del navegador y la guarda en target/site/screenshot.
-
Field Details
-
log
private static final org.slf4j.Logger log
-
-
Constructor Details
-
PlaywrightUtil
private PlaywrightUtil()
-
-
Method Details
-
getNewBrowser
public static com.microsoft.playwright.Browser getNewBrowser(com.microsoft.playwright.Playwright playwright) Lanza el navegador (Chromium) usado en estos tests teniendo en cuenta el fichero de propiedades, de forma analoga a SeleniumUtil.getNewDriver.
Playwright siempre descarga y gestiona sus propios navegadores como cuando se usa SeleniumManager. El objeto Playwright recibido lanza directamente el navegador (la primera ejecucion descarga los binarios. Se puede forzar con "mvn exec:java -Dexec.mainClass=com.microsoft.playwright.CLI -Dexec.args=install").
El comportamiento se controla con la propiedad remote.web.driver.url (se reutiliza la misma configuracion que en Selenium, selenium.properties, para no duplicar ficheros de propiedades):- En ejecucion local no se definen propiedades y se lanza un navegador local en modo headed (visible). - El valor "headless" lanza un navegador local en modo headless (compatible con CI). - Cualquier otro valor se interpreta como una url a la que conectarse via CDP (connectOverCDP).
- Parameters:
playwright- punto de entrada de Playwright ya inicializado (Playwright.create()).- Returns:
- el Browser lanzado (local) o al que se ha conectado (remoto).
-
getTableContent
Equivalente con Playwright a SeleniumUtil.getTableContent: obtiene el contenido de una tabla como matriz de strings. La logica es la misma (recorrer tr y, dentro, td o th), pero usando Locators de Playwright en vez de WebElement. Como la tabla puede no tener un numero igual de celdas en cada fila, el numero de columnas devuelto sera el de la fila mas larga, rellenando con blancos.- Parameters:
table- Locator que apunta a un elemento table.- Returns:
- Matriz de strings con el contenido de cada celda (incluyendo headers).
-
listToStringMatrix
-
takeScreenshot
Toma una imagen de la vista actual del navegador y la guarda en target/site/screenshot. A diferencia de Selenium (SeleniumUtil.takeScreenshot, que necesita castear a TakesScreenshot y crear los directorios), Playwright captura directamente con page.screenshot y crea las carpetas necesarias.- Parameters:
page- pagina de Playwright sobre la que se toma la imagen.name- nombre que se dara a la imagen (le anyade un timestamp para diferenciar imagenes guardadas en la misma sesion).
-