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(); // Предпоставља се да постоји метода за кликање на икону претраге
// Провера да ли се приказују резултати претраге
}
}
Овај приступ обезбеђује читљивост, одрживост и поновну употребу кода при раду са хедером на различитим страницама апликације.