Ответ
Логику работы с локаторами я храню в Page Object-классах, следуя паттерну Page Object Model (POM). Это позволяет инкапсулировать структуру страницы и действия с ней.
Пример на Java с Selenium:
public class LoginPage {
private WebDriver driver;
// Локаторы
private By usernameInput = By.id("username");
private By passwordInput = By.id("password");
private By submitButton = By.id("submit");
public LoginPage(WebDriver driver) {
this.driver = driver;
}
public HomePage login(String username, String password) {
driver.findElement(usernameInput).sendKeys(username);
driver.findElement(passwordInput).sendKeys(password);
driver.findElement(submitButton).click();
return new HomePage(driver);
}
}
Преимущества такого подхода:
- Инкапсуляция: Локаторы и методы их использования находятся в одном месте.
- Удобство поддержки: При изменении локатора правка вносится только в один класс.
- Читаемость тестов: Тесты используют понятные методы (например,
loginPage.login("user", "pass")) вместо низкоуровневых операций сfindElement.
Если локатор используется на нескольких страницах (например, хедер или футер), я выношу его в базовый класс (BasePage) или в отдельный класс с общими компонентами.