Sobes.tech
Junior

¿Cómo organizas la estructura para el encabezado?

sobes.tech AI

Respuesta de la IA

La cabecera puede ser representada como un Page Object que contiene localizadores y métodos para interactuar con los elementos de la cabecera (logotipo, elementos del menú, botones de búsqueda, carrito, etc.).

Los localizadores se pueden almacenar en una clase o en un archivo de configuración separado.

La estructura de la clase será aproximadamente así:

public class HeaderPage {

    // Localizadores de los elementos de la cabecera
    private final By logo = By.cssSelector(".header__logo");
    private final By searchBar = By.id("search-input");
    private final By cartIcon = By.xpath("//a[@class='header__cart']");

    // Métodos para interactuar con los elementos
    public void clickLogo() {
        driver.findElement(logo).click();
    }

    public void enterSearchTerm(String term) {
        driver.findElement(searchBar).sendKeys(term);
    }

    public void clickCartIcon() {
        driver.findElement(cartIcon).click();
    }

    // Métodos para trabajar con elementos dentro de la cabecera, por ejemplo, el menú
    public MenuItem clickMenuItem(String itemName) {
        // Lógica para buscar y hacer clic en un elemento del menú
        return new MenuItem(/*...*/); // Devolver el objeto del elemento del menú
    }
}

Para cabeceras más complejas con menús desplegables o submenús, puede ser necesario crear Page Objects separados para estos elementos, a los que se accederá mediante métodos de la cabecera.

Ejemplo de estructura de carpetas del proyecto:

src/
├── main/
│   └── java/
│       └── com/
│           └── example/
│               └── project/
│                   └── pages/
│                       ├── HeaderPage.java
│                       └── components/
│                           ├── MenuItem.java
│                           └── SearchBar.java
└── test/
    └── java/
        └── com/
            └── example/
                └── project/
                    └── tests/
                        └── HeaderTests.java

En las pruebas, utilizaremos los métodos de HeaderPage para realizar acciones y verificaciones relacionadas con la cabecera.

public class HeaderTests extends BaseTest { // Clase base para la inicialización del driver

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Verificación de que se ha navegado a la página principal
        // Por ejemplo, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Se asume que hay un método para hacer clic en el icono de búsqueda
        // Verificación de que se muestran los resultados de búsqueda
    }
}

Este enfoque garantiza legibilidad, mantenibilidad y reutilización del código al trabajar con la cabecera en diferentes páginas de la aplicación.