Работали ли вы с Selenium WebDriver?

«Работали ли вы с Selenium WebDriver?» — вопрос из категории Selenium и Selenide, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я активно использовал 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.