Junior
Jak organizujete strukturu pro záhlaví?
sobes.tech AI
Odpověď od AI
Heder může být představen jako Page Object, obsahující lokátory a metody interakce s prvky headeru (logo, položky menu, tlačítka hledání, košíků atd.).
Lokátory lze uložit ve třídě nebo samostatném konfiguračním souboru.
Struktura třídy bude přibližně taková:
public class HeaderPage {
// Lokátory prvků 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']");
// Metody interakce s prvky
public void clickLogo() {
driver.findElement(logo).click();
}
public void enterSearchTerm(String term) {
driver.findElement(searchBar).sendKeys(term);
}
public void clickCartIcon() {
driver.findElement(cartIcon).click();
}
// Metody pro práci s prvky uvnitř headeru, například menu
public MenuItem clickMenuItem(String itemName) {
// Logika hledání a kliknutí na položku menu
return new MenuItem(/*...*/); // Vrací objekt položky menu
}
}
Pro složitější hlavičky s rozbalovacími menu nebo podmenu může být nutné vytvořit samostatné Page Objects pro tyto prvky, ke kterým bude přístup přes metody headeru.
Příklad struktury složek projektu:
src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── project/
│ └── pages/
│ ├── HeaderPage.java
│ └── components/
│ ├── MenuItem.java
│ └── SearchBar.java
└── test/
└── java/
└── com/
└── example/
└── project/
└── tests/
└── HeaderTests.java
V testech budeme používat metody z HeaderPage pro provádění akcí a kontrol, souvisejících s hlavičkou.
public class HeaderTests extends BaseTest { // Základní třída pro inicializaci ovladače
@Test
public void testLogoClickNavigatesToHomePage() {
HeaderPage header = new HeaderPage();
header.clickLogo();
// Kontrola, že došlo k přechodu na domovskou stránku
// Například assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
}
@Test
public void testCanSearchFromHeader() {
HeaderPage header = new HeaderPage();
header.enterSearchTerm("test product");
header.clickSearchIcon(); // Předpokládá se, že existuje metoda pro kliknutí na ikonu hledání
// Kontrola, že se zobrazují výsledky hledání
}
}
Takový přístup zajišťuje čitelnost, udržovatelnost a opakované použití kódu při práci s hlavičkou na různých stránkách aplikace.