Как вы организуете структуру для хедера?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Хедер может быть представлен как Page Object, содержащий локаторы и методы взаимодействия с элементами хедера (логотип, пункты меню, кнопки поиска, корзины и т.д.).
Локаторы можно хранить в классе или отдельном файле конфигурации.
Структура класса будет примерно такой:
public class HeaderPage {
// Локаторы элементов хедера
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']");
// Методы взаимодействия с элементами
public void clickLogo() {
driver.findElement(logo).click();
}
public void enterSearchTerm(String term) {
driver.findElement(searchBar).sendKeys(term);
}
public void clickCartIcon() {
driver.findElement(cartIcon).click();
}
// Методы для работы с элементами внутри хедера, например, меню
public MenuItem clickMenuItem(String itemName) {
// Логика поиска и клика по пункту меню
return new MenuItem(/*...*/); // Возвращаем объект пункта меню
}
}
Для более сложных хедеров с выпадающими меню или подменю может потребоваться создание отдельных Page Objects для этих элементов, доступ к которым будет осуществляться через методы хедера.
Пример структуры папок проекта:
src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── project/
│ └── pages/
│ ├── HeaderPage.java
│ └── components/
│ ├── MenuItem.java
│ └── SearchBar.java
└── test/
└── java/
└── com/
└── example/
└── project/
└── tests/
└── HeaderTests.java
В тестах мы будем использовать методы из HeaderPage для выполнения действий и проверок, связанных с хедером.
public class HeaderTests extends BaseTest { // Базовый класс для инициализации драйвера
@Test
public void testLogoClickNavigatesToHomePage() {
HeaderPage header = new HeaderPage();
header.clickLogo();
// Проверка, что произошел переход на домашнюю страницу
// Например, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
}
@Test
public void testCanSearchFromHeader() {
HeaderPage header = new HeaderPage();
header.enterSearchTerm("test product");
header.clickSearchIcon(); // Предполагается, что есть метод для клика по иконке поиска
// Проверка, что отображаются результаты поиска
}
}
Такой подход обеспечивает читаемость, поддерживаемость и повторное использование кода при работе с хедером на разных страницах приложения.