Sobes.tech
Junior

Cum organizezi structura pentru antet?

sobes.tech AI

Răspuns de la AI

Antetul poate fi reprezentat ca un obiect Page care conține localizatori și metode pentru interacțiunea cu elementele antetului (logo, elemente de meniu, butoane de căutare, coș de cumpărături etc.).

Localizatorii pot fi stocați într-o clasă sau într-un fișier de configurare separat.

Structura clasei va fi aproximativ astfel:

public class HeaderPage {

    // Localizatori pentru elementele antetului
    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']");

    // Metode pentru interacțiunea cu elementele
    public void clickLogo() {
        driver.findElement(logo).click();
    }

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

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

    // Metode pentru lucrul cu elementele din interiorul antetului, de exemplu, meniul
    public MenuItem clickMenuItem(String itemName) {
        // Logica de căutare și clic pe un element de meniu
        return new MenuItem(/*...*/); // Returnează obiectul elementului de meniu
    }
}

Pentru anteturi mai complexe cu meniuri derulante sau submeniuri, poate fi necesar să creați obiecte Page separate pentru aceste elemente, accesibile prin metodele antetului.

Exemplu de structură a folderelor proiectului:

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

În teste, vom folosi metodele din HeaderPage pentru a efectua acțiuni și verificări legate de antet.

public class HeaderTests extends BaseTest { // Clasa de bază pentru inițializarea driver-ului

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Verificare că s-a navigat pe pagina principală
        // De exemplu, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Se presupune că există o metodă pentru clic pe iconița de căutare
        // Verificare că rezultatele de căutare sunt afișate
    }
}

Această abordare asigură lizibilitatea, întreținerea și reutilizarea codului atunci când lucrați cu antetul pe diferite pagini ale aplicației.