Sobes.tech
Junior

Kako organizujete strukturu za header?

sobes.tech АИ

Одговор од АИ

Гејдер може бити представљен као Page Object, садржећи локаторе и методе за интеракцију са елементима хејдера (логотип, ставке менија, дугмад за претрагу, корпу итд.).

Локатори могу бити сачувани у класи или посебном конфигурационом фајлу.

Структура класе ће отприлике изгледати овако:

public class HeaderPage {

    // Локатори елемената хејдера
    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']");

    // Методи за интеракцију са елементима
    public void clickLogo() {
        driver.findElement(logo).click();
    }

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

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

    // Методи за рад са елементима унутар хејдера, на пример, мени
    public MenuItem clickMenuItem(String itemName) {
        // Логика за претрагу и кликање на ставку менија
        return new MenuItem(/*...*/); // Враћамо објекат ставке менија
    }
}

За сложеније хејдере са падајућим менијима или подменијима, може бити потребно креирање посебних Page Objects за те елементе, до којих ће се приступати преко метода хејдера.

Пример структуре фолдера пројекта:

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

У тестовима ћемо користити методе из HeaderPage за извођење акција и провера, везаних за хедер.

public class HeaderTests extends BaseTest { // Базна класа за иницијализацију драйвера

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Провера да ли је дошло до преласка на почетну страницу
        // На пример, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Предпоставља се да постоји метода за кликање на икону претраге
        // Провера да ли се приказују резултати претраге
    }
}

Овај приступ обезбеђује читљивост, одрживост и поновну употребу кода при раду са хедером на различитим страницама апликације.