Разработка автоматических тестов с использованием Selenium

Почему Selenium – Ваш выбор для автоматического тестирования?

Сегодня автоматизированное тестирование играет ключевую роль в обеспечении качества программного обеспечения. Selenium – один из наиболее популярных инструментов в этой области, позволяющий автоматизировать тестирование веб-приложений.

Сильные стороны Selenium – это его гибкость и способность интегрироваться с различными системами управления тестами и средами разработки. Selenium поддерживает множество браузеров и языков программирования, включая Java, C#, Python и Ruby.

Составляющие Selenium: WebDriver, Grid и IDE

Selenium – это не просто один инструмент, а целый набор инструментов для разных нужд, включающий в себя Selenium WebDriver, Selenium Grid и Selenium IDE. Рассмотрим каждый из них более подробно.

Selenium WebDriver

Selenium WebDriver – это основная часть Selenium, позволяющая автоматизировать взаимодействие с веб-браузером. WebDriver представляет собой API, который предоставляет набор функций для работы с браузером: открытие и закрытие окон, взаимодействие с элементами страницы и т. д.

Selenium Grid

Selenium Grid – это инструмент, который позволяет выполнять тесты параллельно на разных машинах и в разных браузерах. Это ускоряет процесс тестирования и позволяет учитывать различные условия выполнения тестов.

Selenium IDE

Selenium IDE – это инструмент для записи и воспроизведения тестов. Он представляет собой плагин для браузера, который позволяет быстро создавать тесты без написания кода.

Работа с Selenium WebDriver: основы

Работа с Selenium WebDriver начинается с создания экземпляра драйвера для конкретного браузера. Далее, с помощью методов WebDriver, можно управлять браузером и взаимодействовать с элементами веб-страницы.

Вот пример простого теста на Python, который открывает страницу Google и проверяет, что ее заголовок правильный:


from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.google.com")

assert "Google" in driver.title

driver.quit()

Здесь создается экземпляр драйвера Firefox, открывается страница Google и проверяется, что ее заголовок содержит слово «Google». В конце теста браузер закрывается.

Поиск элементов на странице с помощью WebDriver

Одна из основных задач при автоматическом тестировании – это поиск элементов на странице для взаимодействия с ними. WebDriver предоставляет различные способы поиска элементов, включая поиск по ID, имени, классу, CSS-селектору или XPath.

Например, вот как можно найти элемент по его ID и ввести текст в него:


element = driver.find_element_by_id("my-id")
element.send_keys("Some text")

Ожидания в WebDriver: явные и неявные

При тестировании веб-приложений часто возникает ситуация, когда нужно подождать, пока элемент появится на странице или пока он станет доступным для взаимодействия. WebDriver предоставляет два типа ожиданий: явные и неявные.

Явные ожидания

Явные ожидания используются, когда мы хотим подождать определенное время до тех пор, пока определенное условие не выполнится. Например, мы можем ждать, пока элемент не станет видимым:


from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, "my-id"))
)

Здесь мы ждем до 10 секунд, пока элемент с ID «my-id» не станет видимым.

Неявные ожидания

Неявные ожидания – это способ задать общий тайм-аут, который будет применяться при каждой попытке найти элементы. Если элементы не найдены в течение этого времени, WebDriver выдаст исключение. Например:


driver.implicitly_wait(10)
element = driver.find_element_by_id("my-id")

Здесь WebDriver будет пытаться найти элемент с ID «my-id» в течение 10 секунд перед тем, как выдать исключение.

Автоматизация форм и таблиц с помощью Selenium

Формы и таблицы – это общие элементы веб-страниц, с которыми часто приходится работать при автоматизированном тестировании. Selenium предоставляет простые и эффективные способы работы с этими элементами.

Работа с формами

С помощью Selenium можно заполнять формы, отмечать чекбоксы, выбирать элементы в выпадающих списках и т.д. Например, вот как можно заполнить текстовое поле и отправить форму:


driver.find_element_by_id("username").send_keys("my-username")
driver.find_element_by_id("password").send_keys("my-password")
driver.find_element_by_id("submit").click()

Работа с таблицами

Таблицы можно обрабатывать как обычные элементы, но часто удобнее работать с ними как с двумерными массивами. Например, вот как можно получить текст второй ячейки второго ряда таблицы:


element = driver.find_element_by_xpath("//table[@id='my-table']/tbody/tr[2]/td[2]")
print(element.text)

Обработка исключений в тестах Selenium

При работе с Selenium часто возникают исключения. Например, если элемент не найден или страница не загрузилась за определенное время. Правильная обработка исключений помогает делать тесты надежнее и информативнее.

Вот пример обработки исключения, когда элемент не найден:


from selenium.common.exceptions import NoSuchElementException
try:
element = driver.find_element_by_id("non-existent-id")
except NoSuchElementException:
print("Element not found")

Здесь мы пытаемся найти элемент с ID «non-existent-id». Если его не существует, WebDriver выдаст исключение NoSuchElementException, которое мы перехватываем и выводим сообщение «Element not found».

Помните: Правильное использование Selenium — это ключ к эффективному и надежному автоматическому тестированию веб-приложений!

Максим Беличенко

Опытный разработчик программного обеспечения с более чем 12-летним стажем в IT-индустрии. За время своей карьеры Максим работал на различных позициях, начиная от начинающего программиста и заканчивая архитектором и техническим руководителем проектов. Иван имеет обширный опыт в разработке мобильных, веб- и корпоративных приложений на языках программирования, таких как Java, Python, JavaScript и C#. Он также знаком с различными фреймворками и библиотеками, включая React, Angular, Spring и Django.

Оцените автора
Agilean
Спроси у автора