Sobes.tech
Junior

Ako organizujete štruktúru za hlavičku?

sobes.tech AI

Odpoveď od AI

Header môže byť predstavený ako Page Object, obsahujúci lokátory a metódy na interakciu s prvkami headeru (logo, položky menu, tlačidlá vyhľadávania, košík atď.).

Lokátory je možné uložiť v triede alebo samostatnom konfiguračnom súbore.

Štruktúra triedy bude približne takáto:

public class HeaderPage {

    // Lokátory prvkov headeru
    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']");

    // Metódy na interakciu s prvkami
    public void clickLogo() {
        driver.findElement(logo).click();
    }

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

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

    // Metódy na prácu s prvkami vnútri headeru, napríklad menu
    public MenuItem clickMenuItem(String itemName) {
        // Logika na vyhľadanie a kliknutie na položku menu
        return new MenuItem(/*...*/); // Vraciame objekt položky menu
    }
}

Pre zložitejšie hlavičky s rozbaľovacími menu alebo podmenu môže byť potrebné vytvoriť samostatné Page Objects pre tieto prvky, ku ktorým bude prístup cez metódy headeru.

Príklad štruktúry priečinkov projektu:

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

V testoch budeme používať metódy z HeaderPage na vykonávanie akcií a kontrol, súvisiacich s hlavičkou.

public class HeaderTests extends BaseTest { // Základná trieda pre inicializáciu ovládača

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Kontrola, že došlo k prechodu na domovskú stránku
        // Napríklad assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Predpokladá sa, že existuje metóda na kliknutie na ikonu vyhľadávania
        // Kontrola, že sa zobrazujú výsledky vyhľadávania
    }
}

Takýto prístup zabezpečuje čitateľnosť, udržiavateľnosť a opakovateľné použitie kódu pri práci s hlavičkou na rôznych stránkach aplikácie.