Jak organizujesz strukturę dla nagłówka?
sobes.tech AI
Odpowiedź od AI
Nagłówek może być reprezentowany jako obiekt Page zawierający lokalizatory i metody do interakcji z elementami nagłówka (logo, punkty menu, przyciski wyszukiwania, koszyk itp.).
Lokalizatory można przechowywać w klasie lub w osobnym pliku konfiguracyjnym.
Struktura klasy będzie mniej więcej taka:
public class HeaderPage {
// Lokalizatory elementów nagłówka
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 do interakcji z elementami
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 do pracy z elementami wewnątrz nagłówka, np. menu
public MenuItem clickMenuItem(String itemName) {
// Logika wyszukiwania i klikania elementu menu
return new MenuItem(/*...*/); // Zwracamy obiekt elementu menu
}
}
Dla bardziej skomplikowanych nagłówków z rozwijanymi menu lub podmenu może być konieczne utworzenie osobnych obiektów Page dla tych elementów, do których dostęp będzie realizowany przez metody nagłówka.
Przykład struktury folderów projektu:
src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── project/
│ └── pages/
│ ├── HeaderPage.java
│ └── components/
│ ├── MenuItem.java
│ └── SearchBar.java
└── test/
└── java/
└── com/
└── example/
└── project/
└── tests/
└── HeaderTests.java
W testach będziemy korzystać z metod HeaderPage do wykonywania działań i sprawdzeń związanych z nagłówkiem.
public class HeaderTests extends BaseTest { // Klasa bazowa do inicjalizacji drivera
@Test
public void testLogoClickNavigatesToHomePage() {
HeaderPage header = new HeaderPage();
header.clickLogo();
// Sprawdzenie, czy nastąpiło przejście na stronę główną
// Na przykład: assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
}
@Test
public void testCanSearchFromHeader() {
HeaderPage header = new HeaderPage();
header.enterSearchTerm("test product");
header.clickSearchIcon(); // Zakładamy, że istnieje metoda do kliknięcia ikony wyszukiwania
// Sprawdzenie, czy wyświetlane są wyniki wyszukiwania
}
}
Takie podejście zapewnia czytelność, łatwość utrzymania i ponowne użycie kodu podczas pracy z nagłówkiem na różnych stronach aplikacji.