Ответ
Да, я активно использовал Selenium WebDriver для автоматизации UI-тестирования веб-приложений, преимущественно на Java и Python.
Пример структуры теста с использованием паттерна Page Object Model (POM) на Java:
// Page Object для страницы логина
public class LoginPage {
private WebDriver driver;
private By usernameField = By.id("username");
private By passwordField = By.id("password");
private By submitButton = By.cssSelector("button[type='submit']");
public LoginPage(WebDriver driver) {
this.driver = driver;
}
public void login(String user, String pass) {
driver.findElement(usernameField).sendKeys(user);
driver.findElement(passwordField).sendKeys(pass);
driver.findElement(submitButton).click();
}
}
// Сам тест
public class LoginTest {
WebDriver driver;
@BeforeEach
public void setUp() {
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
}
@Test
public void successfulLoginTest() {
driver.get("https://app.example.com");
LoginPage loginPage = new LoginPage(driver);
loginPage.login("testUser", "securePass123");
// Явное ожидание для проверки успешного входа
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement welcomeMessage = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.id("welcome"))
);
Assert.assertTrue(welcomeMessage.getText().contains("Welcome"));
}
@AfterEach
public void tearDown() {
driver.quit();
}
}
Ключевые аспекты работы:
- Ожидания (Waits): Всегда использовал явные ожидания (
WebDriverWait) вместо неявных илиThread.sleep(), чтобы тесты были стабильными и быстрыми. - Управление браузерами: Работал с Chrome, Firefox, Edge через соответствующие драйверы. Настраивал опции (headless-режим, размер окна, отключение уведомлений).
- Интеграция: Запускал WebDriver-тесты в CI/CD (Jenkins, GitLab CI) с генерацией отчётов через Allure или ExtentReports.