Hoe organiseer je de structuur voor de header?
sobes.tech AI
Antwoord van AI
De koptekst kan worden weergegeven als een Page Object dat locators en methoden bevat voor interactie met de koptekst (logo, menu-items, zoekknoppen, winkelwagen, enz.).
De locators kunnen worden opgeslagen in een klasse of in een apart configuratiebestand.
De structuur van de klasse zal ongeveer als volgt zijn:
public class HeaderPage {
// Locators voor koptekst elementen
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']");
// Methoden voor interactie met de elementen
public void clickLogo() {
driver.findElement(logo).click();
}
public void enterSearchTerm(String term) {
driver.findElement(searchBar).sendKeys(term);
}
public void clickCartIcon() {
driver.findElement(cartIcon).click();
}
// Methoden voor werken met elementen binnen de koptekst, bijvoorbeeld het menu
public MenuItem clickMenuItem(String itemName) {
// Logica om te zoeken en te klikken op een menu-item
return new MenuItem(/*...*/); // Retourneer het menu-item object
}
}
Voor complexere kopteksten met dropdown-menu's of submenu's kan het nodig zijn om aparte Page Objects voor deze elementen te maken, die via methoden van de koptekst toegankelijk zijn.
Voorbeeld van de projectmapstructuur:
src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── project/
│ └── pages/
│ ├── HeaderPage.java
│ └── components/
│ ├── MenuItem.java
│ └── SearchBar.java
└── test/
└── java/
└── com/
└── example/
└── project/
└── tests/
└── HeaderTests.java
In de tests gebruiken we de methoden van HeaderPage om acties uit te voeren en controles uit te voeren die gerelateerd zijn aan de koptekst.
public class HeaderTests extends BaseTest { // Basisklasse voor driver initialisatie
@Test
public void testLogoClickNavigatesToHomePage() {
HeaderPage header = new HeaderPage();
header.clickLogo();
// Controleer dat de navigatie naar de startpagina heeft plaatsgevonden
// Bijvoorbeeld, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
}
@Test
public void testCanSearchFromHeader() {
HeaderPage header = new HeaderPage();
header.enterSearchTerm("test product");
header.clickSearchIcon(); // Er wordt aangenomen dat er een methode is om op het zoekpictogram te klikken
// Controleer dat de zoekresultaten worden weergegeven
}
}
Deze aanpak zorgt voor leesbaarheid, onderhoudbaarheid en hergebruik van code bij het werken met de koptekst op verschillende pagina's van de applicatie.