Sobes.tech
Junior

Hogyan szervezed a fejléc szerkezetét?

sobes.tech MI

Válasz az MI-től

A fejlécet úgy lehet bemutatni, mint egy Page Object-et, amely tartalmazza a lokalizátorokat és az elemekkel való interakcióhoz szükséges módszereket (logó, menüpontok, keresőgombok, kosár stb.).

A lokalizátorokat egy osztályban vagy külön konfigurációs fájlban lehet tárolni.

Az osztály felépítése nagyjából így néz ki:

public class HeaderPage {

    // A fejléc elemeinek lokalizátorai
    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']");

    // Az elemekkel való interakciós módszerek
    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ódszerek a fejlécen belüli elemekkel való munkához, például menü
    public MenuItem clickMenuItem(String itemName) {
        // Menüelem keresése és kattintás logikája
        return new MenuItem(/*...*/); // Menüelem objektum visszaadása
    }
}

Komplexebb fejléc esetén, például legördülő menükkel vagy almenükkel, szükség lehet külön Page Object-ek létrehozására ezekhez az elemekhez, amelyekhez a fejléc módszerein keresztül lehet hozzáférni.

A projekt mappaszerkezete például így néz ki:

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

A tesztekben a HeaderPage metódusait fogjuk használni a fejléchez kapcsolódó műveletek és ellenőrzések végrehajtására.

public class HeaderTests extends BaseTest { // Az alap osztály a driver inicializálásához

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Ellenőrzés, hogy a főoldalra navigált
        // Például: assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Feltételezzük, hogy van egy módszer a kereső ikonra kattintáshoz
        // Ellenőrzés, hogy megjelennek a keresési eredmények
    }
}

Ez a megközelítés biztosítja a kód olvashatóságát, karbantarthatóságát és újrahasznosíthatóságát, amikor a fejlécet különböző oldalakon kezeljük az alkalmazásban.