Sobes.tech
Junior

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.