Mostrando entradas con la etiqueta automatización. Mostrar todas las entradas
Mostrando entradas con la etiqueta automatización. Mostrar todas las entradas

martes, 5 de noviembre de 2024

Automatización con Java y Selenium (Todo lo que necesitas para comenzar)

Buenos días lectores.


Selenium es una potente herramienta (marco de código abierto) para automatizar aplicaciones web en múltiples navegadores y plataformas. Con soporte para varios lenguajes de programación como Java, permite crear scripts de prueba robustos que simulan interacciones de usuario.

Aquí te voy a dejar lo básico para manejarlo, con solo saber esto ya podrás automatizar todos los sitios:


Abrir un Navegador y Navegar a una URL:

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

public class OpenBrowser {

    public static void main(String[] args) {

        WebDriver driver = new ChromeDriver();

        driver.get("https://example.com");

        driver.quit();

    }

}


Encontrar Elementos Usando Diferentes Localizadores:

Por ID:

driver.findElement(By.id("elementID")).click();

Por Nombre:

driver.findElement(By.name("elementName")).sendKeys("input text");

Por XPath:

driver.findElement(By.xpath("//input[@id='elementID']")).click();

Por Selector CSS:

driver.findElement(By.cssSelector("#elementID")).click();


Hacer Clic en un Botón

driver.findElement(By.id("buttonID")).click();


Escribir texto en un cuadro de Texto

driver.findElement(By.name("textboxName")).sendKeys("Sample Text");


Hacer clic en un checkbox (Casillas de Verificación)

WebElement checkbox = driver.findElement(By.id("checkboxID"));

checkbox.click();

System.out.println(checkbox.isSelected());  // Verificar si está seleccionada


Manejo de Listas Desplegables

Select dropdown = new Select(driver.findElement(By.id("dropdownID")));

dropdown.selectByVisibleText("OptionText");


Esperar a que un Elemento Sea Visible y dar click cuando este visible

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("elementID")));

element.click();


Manejo de Alertas

Aceptar Alerta:

Alert alert = driver.switchTo().alert();

alert.accept();


Rechazar Alerta:

Alert alert = driver.switchTo().alert();

alert.dismiss();


Manejo de Múltiples Ventanas

String parentWindow = driver.getWindowHandle();

Set<String> allWindows = driver.getWindowHandles();


for (String window : allWindows) {

    if (!window.equals(parentWindow)) {

        driver.switchTo().window(window);

    }

}

// Volver a la ventana principal

driver.switchTo().window(parentWindow);


Manejo de Carga de Archivos

driver.findElement(By.id("uploadButtonID")).sendKeys("C:\\path\\to\\file.txt");


Tomar Capturas de Pantalla

File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);

FileUtils.copyFile(srcFile, new File("path/to/screenshot.png"));


Extraer Texto de un Elemento Web

String elementText = driver.findElement(By.xpath("//div[@id='elementID']")).getText();

System.out.println(elementText);


Manejo de Marcos (Iframes)

Por Índice:

driver.switchTo().frame(0);

Por Nombre o ID:

driver.switchTo().frame("frameNameOrID");


Manejo de Elementos Dinámicos

driver.findElement(By.xpath("//*[contains(@id, 'dynamicPart')]")).click();


Realizar Acción de Hover con el Ratón

Actions actions = new Actions(driver);

WebElement element = driver.findElement(By.id("elementID"));

actions.moveToElement(element).perform();


Acción de Arrastrar y Soltar (Drag and drop)

Actions actions = new Actions(driver);

WebElement source = driver.findElement(By.id("sourceElementID"));

WebElement target = driver.findElement(By.id("targetElementID"));

actions.dragAndDrop(source, target).perform();


Aserciones en TestNG/JUnit

Aserción en TestNG:

import org.testng.Assert;

String pageTitle = driver.getTitle();

Assert.assertEquals(pageTitle, "Expected Title");


Aserción en JUnit:

import static org.junit.Assert.*;

String pageTitle = driver.getTitle();

assertEquals("Expected Title", pageTitle);


Cerrar el Navegador

Cerrar la ventana actual del navegador:

driver.close();


Terminar la sesión de WebDriver (cerrar todas las ventanas):

driver.quit();


Esta lista cubre preguntas y soluciones esenciales proporcionando una base sólida para la preparación de entrevistas. Así que tienes un 2x1.


Saludos


Fuentes:

https://www.linkedin.com/pulse/basic-selenium-java-automation-testing-kushal-parikh-kgsxf/

martes, 17 de septiembre de 2024

Sitios web para practicar automatización de pruebas WebUI

 En el ámbito de la automatización de pruebas WebUI, la práctica constante es fundamental para adquirir experiencia y mejorar las habilidades técnicas. Estos sitios web también ofrecen otros beneficios significativos para los profesionales y estudiantes de pruebas de software. Afortunadamente, existen varios sitios web gratuitos y abiertos diseñados específicamente para brindar oportunidades de práctica en herramientas populares como Selenium, Cypress y Playwright.

Github User – Starter

Este sitio web proporciona una plataforma para practicar la automatización de pruebas en aplicaciones web de GitHub. Permite realizar búsquedas y explorar perfiles de usuarios, lo que ofrece una excelente oportunidad para poner a prueba las habilidades de automatización de pruebas en un entorno real.

Enlace: https://gh-users-search.netlify.app/

Swag Labs

Swag Labs es un sitio de demostración que ofrece una amplia gama de escenarios de prueba para aplicaciones de comercio electrónico. Los usuarios pueden practicar la automatización de pruebas en diversos aspectos, como la navegación por el sitio, la selección y compra de productos, y la gestión del carrito de compras.

Enlace: https://www.saucedemo.com/

DEMOQA

DEMOQA es una plataforma de demostración que ofrece una variedad de herramientas y aplicaciones para practicar la automatización de pruebas. Desde formularios y ventanas emergentes hasta interacciones complejas de elementos de página, este sitio proporciona una amplia gama de escenarios de prueba para mejorar las habilidades en la automatización de pruebas WebUI.

Enlace: https://demoqa.com/

Automation Exercise

Este sitio web ofrece ejercicios prácticos y desafiantes para aquellos que desean mejorar sus habilidades en la automatización de pruebas. Con una variedad de escenarios de prueba, los usuarios pueden poner a prueba su conocimiento y experiencia en herramientas de automatización como Selenium, Cypress y Playwright.

Enlace: https://automationexercise.com/

Expand Testing

Expand Testing proporciona una serie de ejercicios de práctica para la automatización de pruebas en aplicaciones web. Con casos de prueba estructurados y detallados, este sitio ofrece una excelente oportunidad para desarrollar habilidades en la automatización de pruebas WebUI en un entorno controlado y seguro.

Enlace: https://practice.expandtesting.com/

Test Pages by Evil Tester

est Pages es un sitio web creado por Evil Tester que ofrece una variedad de escenarios de prueba diseñados específicamente para poner a prueba las habilidades en la automatización de pruebas WebUI. Con ejercicios que abarcan desde formularios simples hasta interacciones complejas de elementos de página, este sitio ofrece una excelente oportunidad para practicar y mejorar las habilidades en la automatización de pruebas.

Enlace: https://testpages.eviltester.com/styled/index.html

UI Test Automation Playground

Este sitio web proporciona un entorno de práctica interactivo para la automatización de pruebas de interfaz de usuario (UI). Con una variedad de ejemplos y desafíos, los usuarios pueden experimentar con herramientas de automatización como Selenium y Cypress para mejorar sus habilidades en la automatización de pruebas WebUI.

Enlace: http://www.uitestingplayground.com/

Estos sitios web ofrecen una valiosa oportunidad para practicar y mejorar las habilidades en la automatización de pruebas WebUI en un entorno práctico y controlado. Al participar en estos ejercicios y escenarios de prueba, los profesionales pueden adquirir experiencia práctica y desarrollar competencias técnicas fundamentales en el campo de la automatización de pruebas.



Fuente del articulo:

https://mteheran.dev/sitios-web-para-practicar-automatizacion-de-pruebas-webui/

jueves, 22 de agosto de 2024

Serenity.conf con Selenium grid y que funcione para Linux y Windows

Buenas lectores.

Les comparto mi archivo serenity.conf el cual funciona conectandome a un selenium grid que a su vez tiene varios nodos, entre ellos una combinación entre Windows  y Linux.

Con el siguiente serenity.conf pueden ejecutar en ambos sistemas operativos sin que salgan los mensajes de chrome crash: 


serenity {

  take.screenshots = FOR_FAILURES

  test.root = "starter.acceptancetests"

  logging = QUIET

}


headless.mode = true

webdriver {

  driver = remote

  capabilities {

    browserName = "chrome"

    acceptInsecureCerts = true

    "goog:chromeOptions" {

      args = ["ignore-certificate-errors","disable-popup-blocking","headless=new","start-maximized","no-sandbox","disable-dev-shm-usage","--disable-blink-features=AutomationControlled"]

    }

  }

  remote {

    url="http://localhost:4444/wd/hub"

    driver=chrome

    headless.mode = false

    capabilities {

    browserName = "chrome"

    acceptInsecureCerts = true

    "goog:chromeOptions" {

        args = ["ignore-certificate-errors","disable-popup-blocking","headless=new","start-maximized","no-sandbox","disable-dev-shm-usage","--disable-blink-features=AutomationControlled"]

    }

  }

  }

 }

Espero les sirva.

PD: No es necesario enviar el último flag.

Saludos.


Se te comienzan a quedar sesiones de chrome abiertas luego de ejecutar automatizaciones?

Buenas lectores.

Ha venido ocurriendo que en algunos proyectos ejecutados se van quedando procesos de chrome huerfanos ocasionando que el consumo de la CPU suba al 100% y finalmente la caida del servidor de pruebas.

He realizado descarte de muchos factores, sin embargo, el parámetro que parece funcionar es quitar el siguiente flag: "disable-gpu".

He probado y funciona con la creación directa del webdriver y también cuando lo parametrizamos desde el serenity.conf.

Espero les sirva el tip.

Saludos.