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

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

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

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

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

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

Основные методы в Selenium WebDriver

Selenium WebDriver предоставляет обширный API для автоматизации веб-браузера. Его методы можно разделить на несколько ключевых категорий, каждая из которых решает определённые задачи в процессе тестирования. Вот детальный разбор основных групп методов.

1. Методы для навигации и управления браузером

Эти методы управляют самой сессией браузера и переходом по страницам.

// Примеры на Java
driver.get("https://example.com"); // Открывает указанный URL
driver.navigate().to("https://example.com"); // Альтернативный способ навигации
driver.navigate().back(); // Назад по истории
driver.navigate().forward(); // Вперёд по истории
driver.navigate().refresh(); // Обновить текущую страницу
driver.getCurrentUrl(); // Получить текущий URL
driver.getTitle(); // Получить заголовок текущей страницы
driver.quit(); // Закрыть все окна и завершить сессию WebDriver
driver.close(); // Закрыть текущее окно браузера

2. Методы для поиска элементов (Locators)

Основа любого скрипта Selenium — поиск веб-элементов на странице. Для этого используется объект WebDriver или WebElement и набор стратегий, соответствующих селекторам CSS или XPath.

# Примеры на Python
from selenium.webdriver.common.by import By

# Поиск одного элемента (выбрасывает исключение, если элемент не найден)
element = driver.find_element(By.ID, "login-button")
element = driver.find_element(By.NAME, "username")
element = driver.find_element(By.CLASS_NAME, "form-input")
element = driver.find_element(By.TAG_NAME, "input")
element = driver.find_element(By.LINK_TEXT, "Forgot Password?")
element = driver.find_element(By.PARTIAL_LINK_TEXT, "Forgot")
element = driver.find_element(By.CSS_SELECTOR, "#container > .list")
element = driver.find_element(By.XPATH, "//button[@data-test='submit']")

# Поиск списка всех подходящих элементов (возвращает пустой список, если не найдено)
all_links = driver.find_elements(By.TAG_NAME, "a")

Важно: Современная практика рекомендует использовать driver.find_element(By.LOCATOR, "value") вместо устаревшего driver.find_element_by_id("value").

3. Методы для взаимодействия с элементами

После нахождения элемента с ним можно взаимодействовать, имитируя действия пользователя.

  • Клик и отправка данных:

    WebElement button = driver.findElement(By.id("submit"));
    button.click(); // Выполнить клик по элементу
    
    WebElement searchField = driver.findElement(By.name("q"));
    searchField.sendKeys("Selenium WebDriver"); // Ввести текст
    searchField.clear(); // Очистить поле ввода
    searchField.sendKeys("New text");
    searchField.submit(); // Отправить форму (если элемент находится внутри формы)
    
  • Получение информации о состоянии элемента:

    text = element.text # Получить видимый текст элемента
    attribute_value = element.get_attribute("href") # Получить значение атрибута (например, href, class, value)
    css_value = element.value_of_css_property("color") # Получить CSS-свойство
    tag_name = element.tag_name # Получить имя тега
    is_displayed = element.is_displayed() # Видим ли элемент?
    is_enabled = element.is_enabled() # Доступен ли элемент для взаимодействия?
    is_selected = element.is_selected() # Выбран ли (для чекбоксов и радиокнопок)?
    

4. Методы для работы с окнами, фреймами и алертами

Сложные приложения часто используют несколько окон, iframe или всплывающие уведомления.

// Управление окнами
String mainWindowHandle = driver.getWindowHandle(); // Дескриптор текущего окна
Set<String> allHandles = driver.getWindowHandles(); // Все открытые дескрипторы
driver.switchTo().window("windowHandleName"); // Переключиться на другое окно

// Управление фреймами (iframe)
driver.switchTo().frame("frameNameOrId"); // Переключиться во фрейм по имени, ID или индексу
driver.switchTo().frame(driver.findElement(By.cssSelector("iframe"))); // Переключиться по WebElement
driver.switchTo().parentFrame(); // Вернуться к родительскому фрейму
driver.switchTo().defaultContent(); // Вернуться к основному контенту страницы

// Управление JavaScript алертами
Alert alert = driver.switchTo().alert();
alert.accept(); // Принять (OK)
alert.dismiss(); // Отклонить (Cancel)
String alertText = alert.getText(); // Получить текст алерта
alert.sendKeys("Text for prompt"); // Ввести текст в prompt

5. Методы выполнения JavaScript

Позволяют выполнять произвольный JavaScript-код в контексте текущей страницы, что полезно для сложных операций или обходных путей.

# Пример на Python
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Проскроллить страницу
value = driver.execute_script("return document.title;") # Выполнить скрипт и вернуть результат
driver.execute_script("arguments[0].click();", element) # Кликнуть на элемент через JS

6. Методы ожиданий (Waits)

Критически важные методы для создания стабильных тестов. Позволяют синхронизировать выполнение скрипта со состоянием приложения.

  • Неявные ожидания (Implicit Wait): Устанавливаются один раз на всю сессию. При поиске элементов WebDriver будет опрашивать DOM в течение заданного времени.

    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    
  • Явные ожидания (Explicit Wait): Лучшая практика. Ожидание конкретного условия для определённого элемента.

    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("dynamicElement")));
    // Другие полезные ExpectedConditions:
    // elementToBeClickable(), presenceOfElementLocated(), textToBePresentInElement()
    

7. Методы управления cookies

driver.manage().addCookie(new Cookie("key", "value")); // Добавить cookie
Cookie cookie = driver.manage().getCookieNamed("sessionId"); // Получить cookie по имени
Set<Cookie> allCookies = driver.manage().getCookies(); // Получить все cookies
driver.manage().deleteCookieNamed("sessionId"); // Удалить конкретную cookie
driver.manage().deleteAllCookies(); // Удалить все cookies

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