Cum organizezi structura pentru antet?
sobes.tech AI
Răspuns de la AI
Antetul poate fi reprezentat ca un obiect Page care conține localizatori și metode pentru interacțiunea cu elementele antetului (logo, elemente de meniu, butoane de căutare, coș de cumpărături etc.).
Localizatorii pot fi stocați într-o clasă sau într-un fișier de configurare separat.
Structura clasei va fi aproximativ astfel:
public class HeaderPage {
// Localizatori pentru elementele antetului
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']");
// Metode pentru interacțiunea cu elementele
public void clickLogo() {
driver.findElement(logo).click();
}
public void enterSearchTerm(String term) {
driver.findElement(searchBar).sendKeys(term);
}
public void clickCartIcon() {
driver.findElement(cartIcon).click();
}
// Metode pentru lucrul cu elementele din interiorul antetului, de exemplu, meniul
public MenuItem clickMenuItem(String itemName) {
// Logica de căutare și clic pe un element de meniu
return new MenuItem(/*...*/); // Returnează obiectul elementului de meniu
}
}
Pentru anteturi mai complexe cu meniuri derulante sau submeniuri, poate fi necesar să creați obiecte Page separate pentru aceste elemente, accesibile prin metodele antetului.
Exemplu de structură a folderelor proiectului:
src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── project/
│ └── pages/
│ ├── HeaderPage.java
│ └── components/
│ ├── MenuItem.java
│ └── SearchBar.java
└── test/
└── java/
└── com/
└── example/
└── project/
└── tests/
└── HeaderTests.java
În teste, vom folosi metodele din HeaderPage pentru a efectua acțiuni și verificări legate de antet.
public class HeaderTests extends BaseTest { // Clasa de bază pentru inițializarea driver-ului
@Test
public void testLogoClickNavigatesToHomePage() {
HeaderPage header = new HeaderPage();
header.clickLogo();
// Verificare că s-a navigat pe pagina principală
// De exemplu, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
}
@Test
public void testCanSearchFromHeader() {
HeaderPage header = new HeaderPage();
header.enterSearchTerm("test product");
header.clickSearchIcon(); // Se presupune că există o metodă pentru clic pe iconița de căutare
// Verificare că rezultatele de căutare sunt afișate
}
}
Această abordare asigură lizibilitatea, întreținerea și reutilizarea codului atunci când lucrați cu antetul pe diferite pagini ale aplicației.