La automatización de pruebas web puede ser un desafío para los testers. Configurar el entorno adecuado, iniciar el navegador y lograr una interacción efectiva con el sitio web puede llevar mucho tiempo y esfuerzo. Pero no te preocupes, en este artículo te mostraré cómo automatizar una página web en 40 segundos utilizando TestNG, Selenium WebDriver y DriverManager. ¡Vamos a darle al código!

Paso 1: Preparación del Terreno

Antes de comenzar, asegúrate de tener instaladas el JDK y el IDE.

Paso 2: ¡Al Tajo!

Comienza creando un nuevo proyecto de Java en tu IDE favorito y agrega las dependencias requeridas para TestNG, Selenium WebDriver y DriverManager en tu archivo de configuración de Maven o Gradle.

Paso 3: Agregar Dependencias en el archivo pom.xml

Abre tu archivo pom.xml y agrega las siguientes dependencias para TestNG, Selenium WebDriver y DriverManager:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.qaxpert</groupId>
    <artifactId>QAX40s</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.15.0</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.4.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.6.2</version>
        </dependency>


    </dependencies>
    <properties>
        <maven.compiler.source>19</maven.compiler.source>
        <maven.compiler.target>19</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

Paso 4: Escribir las Pruebas

Vamos a escribir algunas pruebas utilizando TestNG y Selenium WebDriver. Por ejemplo, podríamos verificar que el título de la página coincida con nuestras expectativas.

Paso 4.1: Creación del Archivo TestingQAX.java y Importación de Librerías

Crea un nuevo archivo llamado TestingQAX.java en tu proyecto y asegúrate de importar las siguientes librerías:

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestingQAX {

}

Paso 4.2: Crear el Objeto WebDriver

Crea un objeto WebDriver para interactuar con el navegador:

@BeforeTest
public void setUp() {
    driver = new ChromeDriver();
}

@Test
public void ejecutarPrueba() {
    // Aquí irá el código de la prueba
}

@AfterTest
public void tearDown() {
    if (driver != null) {
        driver.quit();
    }
}

Paso 4.4: Utilizar DriverManager para Levantar el Navegador con la Página de QAXpert.com

Ahora, utiliza DriverManager para levantar el navegador con la página de QAXpert.com:

 @BeforeTest
    public void setUp() {
        WebDriverManager.chromedriver().setup();
        driver = new ChromeDriver();
        driver.get("https://qaxpert.com/hands-on/");
    }

Paso 4.5: Crear los Elementos con los Localizadores de la Página

Crea los elementos de la página utilizando los localizadores adecuados:

By botonLogin = By.xpath("//a[text()='Login']");
By campoUsuario = By.id("usuario");
By campoContrasena = By.id("contrasena");
By botonIniciarSesion = By.xpath("//button[text()='Iniciar Sesión']");

Paso 4.6: Interactuar con la Página

Interactúa con la página realizando acciones como hacer clic en botones, ingresar texto en campos, etc.

@Test
public void AutomatizandoQAX() {
    WebElement login = driver.findElement(botonLogin);
    login.click();

    WebElement usuario = driver.findElement(campoUsuario);
    usuario.sendKeys("qaxpert");

    WebElement contrasena = driver.findElement(campoContrasena);
    contrasena.sendKeys("Ninja For Testing");

    WebElement iniciarSesion = driver.findElement(botonIniciarSesion);
    iniciarSesion.click();
}

Paso 4.7: Cerrar el Driver

Asegúrate de cerrar el driver después de ejecutar la prueba:

@AfterTest
public void tearDown() {
    if (driver != null) {
        driver.quit();
    }
}

Con estos ajustes, las pruebas automatizadas interactuarán correctamente con la página de QAXpert.com, haciendo clic en el botón de login, ingresando el usuario y la contraseña, y luego iniciando sesión. ¡Estás listo para picar y automatizar tus pruebas web en menos de un minuto!

Asi debería de quedar la clase TestingQAX.java


import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestingQAX {
    private WebDriver driver;

    @BeforeTest
    public void setUp() {
        WebDriverManager.chromedriver().setup();
        driver = new ChromeDriver();
        driver.get("https://qaxpert.com/hands-on/");
    }

    @Test
    public void AutomatizandoQAX() {

        By botonLogin = By.xpath("//a[text()='Login']");
        By campoUsuario = By.id("usuario");
        By campoContrasena = By.id("contrasena");
        By botonIniciarSesion = By.xpath("//button[text()='Iniciar Sesión']");

        WebElement login = driver.findElement(botonLogin);
        login.click();

        WebElement usuario = driver.findElement(campoUsuario);
        usuario.sendKeys("qaxpert");

        WebElement contrasena = driver.findElement(campoContrasena);
        contrasena.sendKeys("Ninja For Testing");

        WebElement iniciarSesion = driver.findElement(botonIniciarSesion);
        iniciarSesion.click();
    }

    @AfterSuite
    public void exit(){
        driver.quit();
    }

}