Entradas

Mostrando las entradas etiquetadas como chrome

Como capturar los responses que hace el sitio mientras automatizamos el frontend

Buenas lectores. Cuando estamos automatizando y por algún motivo la interfaz presenta error y/o se queda sin permitir ninguna acción; no es suficiente con reportar el bug puesto que en la mayoría del tiempo esto ocurre de manera aleatoria. Para esto, es mejor estar preparados e imprimir la mayor cantidad de información que le permitan al desarrollador de la aplicación saber que pudo suceder en ese momento. Una forma facil y muy util es imprimir todas las peticiones que se envían por backend para saber si en algún momento algún servicio deja de funcionar. Para lograrlo vamos a interactuar con el devtools de chrome, cabe destacar que para poder usarlo debemos tener como mínimo Selenium v4. Vamos al ejemplo: Selenium directo :  import java.time.Duration; import java.util.HashMap; import java.util.Optional; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.devtools.HasDevTool...

Como saber que navegador esta ejecutando la automatización usando serenityBDD

Buenas lectores.  En algún momento puedes necesitar acceder a las características del navegador que está ejecutando la prueba, por ejemplo , saber si se está ejecutando en modo background. Para esas necesidades necesitamos acceder a la capabilities del navegador que está ejecutando la prueba.  Podemos hacerlo de la siguiente manera: Manera "screenplay": String browser = RemoteDriver.of(BrowseTheWeb.as(actor).getDriver()).getCapabilities().getBrowserName(); System.out.println("Browser: "+browser); Manera "pom": String browser =  RemoteDriver.of(Serenity.getDriver()).getCapabilities().getBrowserName(); System.out.println("Browser: "+browser); En screanplay funcionan ambas, la diferencia dependería del actor. En el ejemplo anterior podemos saber que navegador está ejecutando actualmente la prueba. Coordial Saludo. Fuentes: https://github.com/serenity-bdd/serenity-core/issues/2225 https://chromedriver.chromium.org/capabilities https://webdriver.io/es...

Como configurar el tamaño de la ventana de chrome cuando lanzas una automatización con SerenityBDD

Buenas lectores. Cuando lanzamos nuestra automatización en modo "background" siempre se envía un tamaño de ventana por defecto, esto hace que algunos escenario fallen por ser una pantalla pequeña. Para solucionar o manipular el tamaño simplemente enviamos por medio de chromeoptions el tamaño deseado de la siguiente forma: ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.AddArgument("--window-size=1300,1000"); Cuando trabajamos con SerenityBDD tenemos la ventaja que el mismo nos levanta la sesión, para manipular el tamaño simplemente agregamos al serenity.conf lo siguiente: "goog:chromeOptions" {         args = ["start-maximized", "no-sandbox", "ignore-certificate-errors", "disable-popup-blocking","headless"," --window-size=1920,1080 "                 "disable-default-apps", "disable-extensions-file-access-check", "disable-infobars", "disable-gpu...

Como dar click a un elemento desde la consola de chrome

Buenas lectores. Algunas veces queremos validar porqué nuestras automatizaciones no dan click sobre un elemento que se encuentra presente cuando validamos los informes o simplemente haciendo debug encontramos que está allí presente pero que el robot no es capaz de hacer click. Una de las estrategias para validar que puede estar pasando es realizando click mediante la consola de chrome, esto nos permite validar que no sea un error del aplicativo y que sea necesario reportarlo a desarrollo. Sentencia por js: document.getElementById('button1').click(); Sentencia por jquery: $('#button1').click() Referencias: https://stackoverflow.com/questions/24969908/click-on-element-via-javascript-console  

Imprimir el texto de un elemento desde la consola de chrome

Buenas lectores. En ocasiones nos encontramos con la necesidad de validar si el texto que tiene un elemento es precisamente el texto que vamos a usar en nuestros asserts. También puede suceder que tengamos varios elementos concatenados y que queramos validar cual es el elemento del texto que necesitamos en nuestra automatización, para esto podemos imprimir el texto desde el mismo navegador sin necesidad de estar ejecutando una automatización. Para ello vamos realizar lo siguiente: var elements = document . getElementsByTagName ( "blockquote" ); for ( var prop in elements) { if (elements. hasOwnProperty (prop)) { console . log (elements[prop]. innerHTML ); } } Simplemente cambia el tagName por el que necesites. Cabe anotar que en la segunda referencia pueden revisar otras sentencias para buscar elementos. Fuentes: https://stackoverflow.com/questions/45686985/how-to-access-html-element-text-in-chrome-devtools-console https://www.w3schools.com/jsref/met_document_get...

Cerrar automaticamente los procesos de chrome

Buenas lectores En ocasiones se nos olvida cerrar el driver de chrome cuando estamos automatizando afectando el rendimimiento de nuestra máquina. Puede ocurrir porque no lo cerramos o inclusive un test terminó mal y la sesión quedo en background. Actualmente estoy usando SerenityBdd y al ejecutar varios test quedan abiertos varios procesos de chrome en background, esto hace que el equipo se ponga lento y la navegación en el chrome se vuelva super lenta. Inclusive afecta los demás escenarios que siguen en la suite de pruebas. No he revisado si se trata de un error con el mannager driver sin embargo, la solución directa sin buscar demasiado es cerrar la sesión cada vez que termina un escenario. Para lograr esto, lo agregamos a los pasos con la anotación After de cucumber (en caso que esten trabajandolo, sino, Junit):  @After     public void cleanSessions() {     CloseSessions.closeChrome();     } Y creamos nuestro método que se va a ejecutar por cada p...