Код #Статьи

25 августа, 2025

Автотест на Java: как написать с помощью Selenium WebDriver / Skillbox Media

От настройки проекта до отчётов Allure — простая инструкция для новичков.

Курс с трудоустройством: «Профессия Java-разработчик»

Узнать больше

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

В статье мы напишем два автотеста на языке Java для saucedemo.com — тренировочного сайта, созданного для изучения автоматизации тестирования. Первый тест проверит работу авторизации, а второй — расчёт суммы в корзине. Допустим, если пользователь добавит рюкзак за 2999 рублей и футболку за 1599 рублей, сумма должна составить 4598 рублей. Мы настроим процесс так, чтобы он выполнялся автоматически: от запуска браузера до получения отчёта.

Материал подойдёт тем, кто уже знаком с основами Java и теперь хочет научиться писать автотесты для проверки веб-приложений. Однако, если вы совсем новичок, — в первом разделе мы разберём, что нужно установить и изучить для старта, а затем пошагово соберём проект и напишем сами тесты.

Содержание

  • Что понадобится для работы
  • Подготавливаем рабочее окружение
  • Шаг 1. Создаём Maven-проект
  • Шаг 2. Настраиваем pom.xml
  • Шаг 3. Подключаем зависимости
  • Шаг 4. Подключаем плагины и настраиваем сборку
  • Шаг 5. Устанавливаем ChromeDriver
  • Шаг 6. Проверяем проект перед запуском
  • Пишем автотесты
  • Шаг 1. Создаём класс для запуска браузера
  • Шаг 2. Добавляем конфигурации и константы
  • Шаг 3. Создаём базовый класс страницы
  • Шаг 4. Создаём страницы и базовый класс тестов
  • Шаг 5. Добавляем сценарии тестирования
  • Шаг 6. Создаём файл testng.xml для запуска тестов
  • Запускаем тесты и смотрим отчёты

Что понадобится для работы

Прежде чем начинать, вы должны иметь хотя бы базовое понимание языка Java и принципов работы с зависимостями. Также нужно установить и настроить среду разработки IntelliJ IDEA — в ней мы будем писать автотесты. Ниже — несколько материалов, которые помогут во всём разобраться:

  • Java Core для новичков: роадмап
  • IntelliJ IDEA: что это за среда разработки и как в ней работать
  • Основы Maven: что это такое и как он работает

Хотя автотесты можно писать в VS Code и других редакторах, мы рекомендуем IntelliJ IDEA Community Edition. Это удобная и бесплатная среда для начинающих Java-разработчиков. В ней вы можете быстро создать проект, подключить зависимости и запускать тесты прямо из интерфейса.

Также нам понадобится ChromeDriver — специальный драйвер для браузера Chrome. Без него библиотека Selenium сама по себе не сможет управлять браузером напрямую. Она умеет симулировать действия пользователя (клик, ввод текста), но для взаимодействия с Chrome ей нужен ChromeDriver как посредник. Где и как скачать этот драйвер — об этом немного позже.

Читайте также:

12 самых полезных плагинов для IntelliJ

Подготавливаем рабочее окружение

В этом разделе мы создадим проект в IntelliJ IDEA: подключим нужные библиотеки, настроим файл pom.xml и скачаем ChromeDriver. В конце напишем простой тест, который запустит браузер и откроет страницу, — это поможет нам убедиться, что всё настроено и готово к работе с автотестами.

После установки IntelliJ IDEA откройте программу и в появившемся окне выберите Java как язык разработки, а Maven — как систему сборки. Затем укажите название проекта, например seleniumwd_test, выберите версию JDK и снимите галочку с пункта Add sample code. Так мы начнём с нуля. После этого нажмите Create, и IntelliJ IDEA создаст проект, с которым мы будем работать.

Окно настройки проекта в IntelliJ IDEA. Мы будем использовать Oracle OpenJDK 23.0.2, но вы можете выбрать любую версию JDK — желательно не ниже 17Скриншот: IntelliJ IDEA / Skillbox Media

После создания проекта IntelliJ IDEA сгенерирует файл pom.xml. Это конфигурация для Maven, где мы будем указывать библиотеки, плагины и параметры компиляции. Сейчас в нём уже есть базовая структура: идентификаторы проекта и секция properties с версией JDK и кодировкой. Эти значения можно оставить, поскольку они подходят для нашей задачи.

Исходный файл pom.xml после создания проектаСкриншот: IntelliJ IDEA / Skillbox Media

Читайте также:

Что такое XML-формат и где его применяют

Теперь добавим в файл pom.xml секцию dependencies. В ней мы укажем библиотеки, которые понадобятся для написания и запуска автотестов. Maven автоматически найдёт и скачает нужные файлы из центрального репозитория, как только мы обновим проект: Selenium WebDriver используется для управления браузером; TestNG — для запуска тестов и их группировки по сценариям; Allure TestNG — для формирования отчётов по результатам тестов.

Секцию dependencies нужно добавить после блока properties, но до закрывающего тега . Вот фрагмент, который вам нужно вставить:

После вставки зависимостей в pom.xml вам нужно вручную обновить Maven-проект, чтобы IntelliJ IDEA подтянула все библиотеки. Для этого сохраните файл (Ctrl + S), откройте панель Maven (иконка с буквой m справа) и нажмите на кнопку с круговой стрелкой — Reload All Maven Projects.

После этого в нижней части окна появится индикатор загрузки — он будет означать начало автоматического обновления зависимостей. Когда процесс завершится, в файле исчезнут красные подчёркивания, а в левой части проекта появится раздел External Libraries. Там можно посмотреть подключённые библиотеки — selenium-java, testng, allure-testng и другие.

Проект после добавления зависимостей и синхронизации с Maven: справа — панель Maven и кнопка Sync/Reload All Maven Projects; в центре — блок кода dependencies в файле pom.xml; слева — раздел External Libraries со списком загруженных библиотекСкриншот: IntelliJ IDEA / Skillbox Media

Теперь добавим в файл pom.xml секцию build. Она нужна для подключения Maven-плагинов, которые помогут запускать тесты и формировать отчёты.

Нас будут интересовать два плагина:

  • maven-surefire-plugin — отвечает за выполнение автотестов;
  • allure-maven — создаёт отчёты по результатам тестов.

Секцию build нужно вставить после блока dependencies, но до тега :

Не забудьте после этого снова сохранить файл (Ctrl + S) и на панели Maven нажать кнопку Reload All Maven Projects, чтобы подтянулись нужные плагины.

Проект после добавления секции build и синхронизации с Maven. В правой панели отображаются подключённые плагины, включая surefire и allure Скриншот: IntelliJ IDEA / Skillbox Media

Если после подключения плагинов IntelliJ IDEA подсвечивает ошибки, значит, вам нужно немного подправить код, прежде чем двигаться дальше ?

Что делать, если возникает ошибка

После добавления плагина maven-surefire-plugin вы можете увидеть ошибку:

Dependency ‘org.aspectj:aspectjweaver:1.9.20.1’ not found

Это значит, что вы указали конкретную версию библиотеки aspectjweaver, но Maven не может её найти. Такое бывает, если версия задана вручную или её ещё нет в репозитории. Примерно такие сообщения вы можете увидеть в редакторе:

Скриншот: IntelliJ IDEA / Skillbox Media

Для исправления ошибки сначала нужно добавить в файл pom.xml переменную с версией библиотеки AspectJ. Это делается в блоке properties:

Сейчас мы используем версию 1.9.22, но в будущем она может измениться. Актуальную стабильную версию можно найти на сайте mvnrepository.com.

Если версия изменилась, просто подставьте её в эту строку:

Дальше внутри плагина maven-surefire-plugin замените жёстко прописанную версию библиотеки aspectjweaver на переменную. Это позволит Maven автоматически подставлять актуальную версию и избежать ошибок при сборке:

После этого найдите в конфигурации плагина строку с параметром -javaagent — она обычно находится в блоке configuration. Эту строку нужно удалить, поскольку библиотека теперь подключается напрямую через Maven:

В конце сохраните файл (Ctrl + S) и нажмите на кнопку Reload All Maven Projects в панели Maven. Если ошибка исчезнет, IntelliJ IDEA покажет зелёную галочку.

Если вы не хотите проходить все шаги вручную, просто удалите старый код и замените его на этот:

Если код не сработает, проверьте версию библиотеки aspectjweaver в строке aspectj.version — возможно, уже появилась более новая стабильная версия.

Также попробуйте ещё раз сохранить файл и нажать Reload All Maven Projects в панели Maven. Если это не помогло, перезапустите IntelliJ IDEA и ещё раз пройдитесь по всем шагам. Возможно, где-то осталась случайная опечатка.

На этапе подготовки мы уже говорили, что Selenium не может напрямую управлять браузером. Для этого ему необходим ChromeDriver — отдельный компонент, который работает как посредник. Чтобы скачать его, перейдите на сайт googlechromelabs.github.io и найдите стабильную версию драйвера, которая соответствует вашей версии браузера и операционной системе.

В этом примере мы скачиваем ChromeDriver для Windows 11 (64-bit) с версией браузера 135.0.7049.97. Выделяем ссылку, кликаем правой кнопкой мыши, нажимаем «Перейти по адресу» и ждём, пока загрузится ZIP-архивСкриншот: Chrome / Skillbox Media

После этого распакуйте скачанный архив и перенесите файл chromedriver.exe в удобную папку. Например, мы создадим на диске C папку tools, и полный путь к файлу будет таким: C:\tools\chromedriver.

Вы можете использовать этот же путь или выбрать любой другой — главное, чтобы он был точным. Чуть позже мы будем указывать его вручную в коде.

Файл chromedriver.exe в папке tools на диске CСкриншот: Windows 11 / Skillbox Media

Мы уже всё подготовили, и теперь осталось убедиться, что проект работает: библиотеки подключены, драйвер установлен, тесты можно запускать. Для этого создадим Java-файл с именем Main.java и вставим в него следующий код:

Если всё настроено правильно, то, когда вы нажмёте зелёную кнопку Run в верхней части окна IntelliJ IDEA, программа сама откроет браузер, а затем сразу его закроет. Если код не запускается, проверьте следующее:

  • точно ли указан путь к chromedriver.exe;
  • совпадает ли версия ChromeDriver с версией вашего браузера;
  • установлен ли Google Chrome или у вас другой браузер;
  • не блокирует ли запуск программы антивирус или система безопасности.
При успешном запуске в консоли вы увидите: строку Process finished with exit code 0 — она означает, что программа завершилась без ошибок; красное сообщение — это предупреждение, которое связано с механизмом Chrome DevTools Protocol. Он нужен для отладки, например для записи логов или отслеживания сетевых запросов. Мы его не используем, поэтому при запуске автотестов такое предупреждение можно игнорироватьСкриншот: IntelliJ IDEA / Skillbox Media

Пишем автотесты

В этом разделе мы напишем два сценария для сайта saucedemo.com. Первый тест будет проверять страницу логина, а второй — работу корзины с товарами.

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

Скриншот: IntelliJ IDEA / Skillbox Media

Создадим два класса: один будет проверять авторизацию, второй — сумму товаров в корзине. Назовём их LoggingTest и PriceSumTest:

  • LoggingTest проверяет, успешно ли пользователь входит в систему;
  • PriceSumTest проверяет, правильно ли рассчитывается сумма выбранных товаров в корзине.

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

Чтобы создать класс LoggingTest, откройте папку src → test → java. Кликните правой кнопкой по папке java, выберите New → Package и введите tests.loggingtest. Затем кликните по пакету tests.loggingtest, выберите New → Java Class, введите имя LoggingTest и добавьте код:

Теперь создадим второй тест — PriceSumTest. Вернитесь в папку src → test → java, создайте пакет tests.pricesumtest, а в нём — Java-класс PriceSumTest:

Рекомендуем снова сверить структуру проекта после этого этапа:

Скриншот: IntelliJ IDEA / Skillbox Media

Для запуска автотестов через Maven нам понадобится конфигурационный XML-файл testng.xml. В нём мы укажем, какие тестовые классы запускать и как их группировать. Файл нужно создать в папке src → test → resources.

Если IntelliJ IDEA не сформировал папку resources в дереве проекта, то вы уже знаете, что делать: кликните правой кнопкой по папке test → java, выберите New → Directory и укажите имя resources. Затем кликните правой кнопкой по новой папке, выберите New → File и введите имя: testng.xml:

Теперь проект полностью готов к запуску автотестов:

  • у нас есть структура проекта, выстроенная по шаблону Page Object;
  • реализованы страницы и сценарии для тестирования;
  • файл testng.xml настроен для запуска через Maven.

В следующем разделе мы запустим тесты и подключим библиотеку Allure — она покажет, какие тесты прошли, какие упали и на каком этапе возникли ошибки.

Финальная структура проекта — убедитесь, что в вашем редакторе всё выглядит так жеСкриншот: IntelliJ IDEA / Skillbox Media

Запускаем тесты и смотрим отчёты

Мы запустим автотесты двумя способами: сначала через IntelliJ IDEA, затем через Maven с использованием Allure. Начнём с запуска через IntelliJ IDEA.

Откройте файл testng.xml — в верхней части окна должна появиться зелёная стрелка. Нажмите на неё, и IntelliJ IDEA запустит оба теста: авторизацию и проверку корзины. Если всё настроено правильно, внизу появится сообщение «Tests passed: 2 of 2», а браузер откроется и выполнит нужные действия. Если один из тестов не пройдёт, вы увидите «Tests failed» и подробности ошибки.

Пример вывода в консоли, когда один тест прошёл успешно, а второй завершился с ошибкой. В этом случае LoggingTest прошёл, а PriceSumTest упал: сумма в корзине оказалась не $29.98, как ожидалось, а $45.98 Скриншот: IntelliJ IDEA / Skillbox Media

Если зелёная стрелка в верхней части окна не появилась, возможно, у вас не установлен плагин TestNG. Чтобы это проверить, откройте настройки IntelliJ IDEA: в меню выберите File → Settings, перейдите во вкладку Plugins и введите в поиск TestNG. Установите плагин и перезапустите редактор.

Если плагин установлен, но стрелка всё равно не отображается, — щёлкните правой кнопкой по файлу testng.xml и выберите Run ‘testng.xml’. После этого тесты должны запуститься как обычно.

Если у вас всё как на изображении, значит, плагин TestNG установлен и работает Скриншот: IntelliJ IDEA / Skillbox Media

Если оба теста прошли успешно, вы увидите сообщение «Tests passed: 2 of 2», зелёные галочки слева от названий автотестов и подробный лог в консоли. Браузер при этом автоматически откроется и выполнит все действия, которые мы описали в сценариях: вход на сайт, добавление товаров и переход в корзину.

Пример успешного выполнения обоих автотестов. Видно, что фактическая и ожидаемая сумма совпадают, а статус Failures: 0 — то есть ошибок нетСкриншот: IntelliJ IDEA / Skillbox Media
Страница корзины на сайте saucedemo.com после выполнения автотеста: мы успешно добавили два товара, и в корзине отображаются их названия и ценыСкриншот: Chrome / Skillbox Media

Наши автотесты запустились в IntelliJ IDEA — теперь давайте запустим их через Maven и сформируем отчёт с помощью библиотеки Allure.

Сначала проверим, установлен ли Maven. Откройте терминал прямо в IntelliJ IDEA и выполните команду:

Если в консоли появилась информация о версии Maven — значит, всё настроено правильно и можно запускать автотесты. А если информации нет, вам нужно скачать актуальную версию и установить Maven для своей операционной системы. После установки обязательно перезапустите IntelliJ IDEA и терминал, чтобы система увидела новую переменную окружения и Maven включился.

Когда Maven будет установлен, попробуйте выполнить в терминале такую команду:

Так вы запустите только один тест, и это удобно для обучения — команда не зависит от файла testng.xml и сможет сработать даже в случае, если в IDE собьётся кэш. После запуска вы увидите в консоли сообщение об успешном выполнении теста или описание ошибки.

Пример успешного запуска автотеста через Maven: мы выполнили команду mvn -Dtest=PriceSumTest test; Maven нашёл и запустил нужный тест (PriceSumTest); тест отработал без ошибок: Tests run: 1, Failures: 0, Errors: 0; общий статус: BUILD SUCCESS — всё хорошоСкриншот: IntelliJ IDEA / Skillbox Media

Чтобы запустить все тесты сразу, используйте другую команду:

В этом случае Maven сначала очистит папку target, где хранятся скомпилированные классы и старые отчёты, а затем выполнит все тесты из файла testng.xml. Однако в нашем учебном проекте эта команда не сработает, поскольку для неё нужна дополнительная настройка файла pom.xml. Чтобы не усложнять, мы пропустим этот шаг и продолжим запускать тесты вручную.

Если автотесты отработали без ошибок — введите в терминале другую команду:

Если в терминале вы видите номер версии, значит, библиотека Allure установлена и готова к работе. Можете снова выполнить тест:

Если Allure не показывает версию в терминале, значит, библиотеки нет в системе. В этом случае вам нужно установить Allure так же, как вы устанавливали Maven, — по инструкции для вашей операционной системы.

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

В нашем примере видно, что запущен один тест, он прошёл успешно, и результат отображается как 100% PassedСкриншот: Allure Report / Skillbox Media

Что дальше

Если у вас всё получилось — поздравляем! Теперь вы в общих чертах понимаете, как работает автоматизация браузера и как писать тесты по шаблону Page Object. Кроме того, у вас появился базовый фреймворк для автотестов — с понятной структурой и возможностью расширения.

Теперь попробуйте реализовать несколько дополнительных сценариев:

  • убедитесь, что после выхода из учётной записи кнопка Login снова становится доступной;
  • добавьте 3–4 разных товара в корзину и проверьте, действительно ли они там отображаются;
  • удалите один товар из корзины и проверьте, исчез ли он из списка;
  • введите неправильный пароль при авторизации и убедитесь, что появляется сообщение об ошибке.

Все эти проверки вы сможете выполнить, если будете дополнять текущие страницы новыми методами или создавать отдельные тестовые классы.

Чтобы ещё больше прокачаться в тестировании на Java, попробуйте поработать с другой популярной библиотекой — JUnit. А если хочется сменить язык, загляните в наш гайд по mock-тестам на Python — там тоже много полезного.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Читайте также:

  • Что такое QA-тестирование и как оно устроено
  • Баг-репорт: что это и как его правильно составить
  • Тестирование мобильных приложений: зачем оно нужно и как проводится