Какие основные классы в Selenium ты знаешь?

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

Ответ

В Selenium WebDriver есть несколько ключевых классов, которые я постоянно использую в автоматизации:

  • WebDriver — основной интерфейс для управления браузером (ChromeDriver, FirefoxDriver). Через него выполняю навигацию и получаю информацию о странице.
  • WebElement — представляет любой DOM-элемент на странице (кнопки, поля ввода). С ним взаимодействую: кликаю, ввожу текст, получаю атрибуты.
  • By — стратегии для локации элементов: By.id, By.xpath, By.cssSelector, By.className. Для стабильности тестов предпочитаю id или data-testid, а xpath использую как запасной вариант.
  • WebDriverWait и ExpectedConditions — для реализации явных ожиданий. Это критически важно для работы с динамическим контентом (AJAX). Например, жду появления элемента или его кликабельности.
  • Actions — для имитации сложных пользовательских действий: drag-and-drop, hover, двойной клик, нажатие комбинаций клавиш.
  • Alert — для переключения контекста и работы с модальными окнами браузера (alert, confirm, prompt).
  • Select — удобная обертка для стандартных HTML <select> элементов (выпадающих списков).

Пример использования в Java:

WebDriver driver = new ChromeDriver();
driver.get("https://example.com");
// Нахожу элемент и ввожу текст
WebElement searchInput = driver.findElement(By.id("search-box"));
searchInput.sendKeys("Selenium WebDriver");
// Использую Actions для отправки комбинации клавиш
new Actions(driver).sendKeys(Keys.ENTER).perform();
// Жду появления результатов
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement firstResult = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".result-item")));