Wie organisieren Sie die Struktur für die Kopfzeile?
sobes.tech KI
Antwort von AI
Der Header kann als Page Object dargestellt werden, das Locator und Methoden zur Interaktion mit den Elementen des Headers (Logo, Menüeinträge, Suchbuttons, Warenkorb usw.) enthält.
Die Locator können in einer Klasse oder in einer separaten Konfigurationsdatei gespeichert werden.
Die Klassenstruktur könnte ungefähr so aussehen:
public class HeaderPage {
// Locator für Header-Elemente
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 zur Interaktion mit den 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 für die Arbeit mit Elementen im Header, z.B. Menü
public MenuItem clickMenuItem(String itemName) {
// Logik zum Suchen und Klicken auf einen Menüpunkt
return new MenuItem(/*...*/); // Gibt das Menü-Item-Objekt zurück
}
}
Für komplexere Header mit Dropdown-Menüs oder Untermenüs kann es notwendig sein, separate Page Objects für diese Elemente zu erstellen, auf die über Methoden des Headers zugegriffen wird.
Beispiel für die Projektordnerstruktur:
src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── project/
│ └── pages/
│ ├── HeaderPage.java
│ └── components/
│ ├── MenuItem.java
│ └── SearchBar.java
└── test/
└── java/
└── com/
└── example/
└── project/
└── tests/
└── HeaderTests.java
In den Tests verwenden wir die Methoden von HeaderPage, um Aktionen durchzuführen und Überprüfungen im Zusammenhang mit dem Header vorzunehmen.
public class HeaderTests extends BaseTest { // Basisklasse für die Driver-Initialisierung
@Test
public void testLogoClickNavigatesToHomePage() {
HeaderPage header = new HeaderPage();
header.clickLogo();
// Überprüfung, dass die Navigation zur Startseite erfolgt ist
// Zum Beispiel: assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
}
@Test
public void testCanSearchFromHeader() {
HeaderPage header = new HeaderPage();
header.enterSearchTerm("test product");
header.clickSearchIcon(); // Es wird angenommen, dass eine Methode zum Klicken auf das Suchsymbol vorhanden ist
// Überprüfung, dass die Suchergebnisse angezeigt werden
}
}
Dieser Ansatz gewährleistet Lesbarkeit, Wartbarkeit und Wiederverwendbarkeit des Codes bei der Arbeit mit dem Header auf verschiedenen Seiten der Anwendung.