← Назад к вопросам

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

2.0 Middle🔥 252 комментариев
#Selenium и UI автоматизация#Фреймворки тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные классы в Selenium WebDriver

В Selenium WebDriver используется объектно-ориентированная архитектура, где ключевые классы инкапсулируют различные аспекты взаимодействия с браузером и веб-элементами. Вот основные классы, которые составляют основу работы с фреймворком.

1. WebDriver

Это центральный интерфейс, представляющий браузер. Он определяет основные методы для управления браузером:

  • Навигация (get(), navigate())
  • Управление окнами и вкладками
  • Поиск элементов (findElement(), findElements())
  • Управление куками
  • Получение информации о странице
// Пример создания экземпляра WebDriver
WebDriver driver = new ChromeDriver();
driver.get("https://example.com");
WebElement element = driver.findElement(By.id("search"));

2. WebElement

Интерфейс, представляющий HTML-элемент на веб-странице. Через него осуществляется взаимодействие с элементами:

  • Клики, ввод текста (click(), sendKeys())
  • Получение атрибутов и свойств (getAttribute(), getText())
  • Проверка состояний (isDisplayed(), isEnabled())
  • CSS-значения и размеры/расположение
WebElement button = driver.findElement(By.cssSelector(".submit-btn"));
button.click();
String text = button.getText();
boolean isVisible = button.isDisplayed();

3. By

Класс для определения стратегий локации элементов. Содержит статические методы для создания объектов By:

  • By.id() - поиск по ID
  • By.className() - поиск по классу
  • By.tagName() - поиск по тегу
  • By.name() - поиск по атрибуту name
  • By.cssSelector() - поиск по CSS-селектору
  • By.xpath() - поиск по XPath
  • By.linkText() и By.partialLinkText() - поиск ссылок по тексту

4. WebDriverWait и ExpectedConditions

Классы для реализации явных ожиданий (explicit waits):

  • WebDriverWait - настраиваемое ожидание с условием
  • ExpectedConditions - набор предопределенных условий (видимость элемента, кликабельность и т.д.)
// Явное ожидание появления элемента
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement element = wait.until(
    ExpectedConditions.visibilityOfElementLocated(By.id("dynamic-element"))
);

5. Actions

Класс для выполнения сложных пользовательских взаимодействий:

  • Drag-and-drop (перетаскивание)
  • Двойной клик, клик с удержанием
  • Наведение курсора (hover)
  • Комбинации клавиш
  • Перемещение к элементу
Actions actions = new Actions(driver);
actions.moveToElement(menuElement)
       .click(dropdownItem)
       .perform();

6. Alert

Интерфейс для работы с всплывающими окнами (алертами):

  • accept() - принятие алерта (OK)
  • dismiss() - отклонение алерта (Cancel)
  • getText() - получение текста сообщения
  • sendKeys() - ввод текста в промпт

7. Select

Класс-обертка для работы с выпадающими списками (<select>):

  • Выбор по значению, индексу или видимому тексту
  • Получение всех опций
  • Проверка множественного выбора
Select dropdown = new Select(driver.findElement(By.id("country")));
dropdown.selectByVisibleText("Россия");
List<WebElement> allOptions = dropdown.getOptions();

8. RemoteWebDriver

Реализация WebDriver для удаленного выполнения тестов (Selenium Grid):

  • Позволяет запускать тесты на удаленных машинах
  • Поддерживает распределенное тестирование

9. TakesScreenshot

Интерфейс для создания скриншотов во время выполнения тестов:

  • getScreenshotAs() - получение скриншота в разных форматах
TakesScreenshot screenshotDriver = (TakesScreenshot) driver;
File screenshot = screenshotDriver.getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, new File("screenshot.png"));

10. JavascriptExecutor

Интерфейс для выполнения JavaScript-кода в контексте браузера:

  • Полезен для нестандартных операций
  • Обход ограничений Selenium
  • Модификация DOM
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");

11. DesiredCapabilities и ChromeOptions/FirefoxOptions

Классы для настройки параметров браузера:

  • Установка аргументов командной строки
  • Добавление расширений
  • Настройка профилей
  • Определение платформы и версии браузера

Практическое значение

Понимание этих классов критически важно для:

  • Эффективного поиска и взаимодействия с элементами
  • Реализации надежных ожиданий (avoiding flaky tests)
  • Создания сложных пользовательских сценариев
  • Организации масштабируемой архитектуры тестов
  • Отладки проблем во время выполнения тестов

В современных фреймворках эти классы часто комбинируются с Page Object Pattern, где каждая страница инкапсулирует свои элементы и методы взаимодействия с ними, что улучшает поддерживаемость и читаемость тестового кода.