Selenium — это набор инструментов и библиотек, поддерживающих автоматизацию браузера, и он в основном используется для тестирования веб-приложений. Одним из компонентов Selenium является Selenium WebDriver, который предоставляет клиентскую библиотеку, проводной протокол JSON (протокол для связи с драйверами браузера) и драйверы браузера. Одним из основных преимуществ Selenium WebDriver является то, что он поддерживается всеми основными языками программирования и может работать во всех основных операционных системах.
В этом руководстве я рассмотрю настройку проекта автоматизации тестирования для популярного приложения TodoMVC, использующего Gradle с Java, JUnit 5 и Selenium Jupiter. Вы узнаете о PageFactory компании Selenium для реализации шаблона Page Object. Вы также узнаете о параллельном выполнении тестов, порядке выполнения тестов, параметризованных тестах и многом другом.
Об этом уроке
Вы читаете первую часть JUnit 5 с Selenium WebDriver — Tutorial .
Все статьи в этом уроке:
- Настройте проект с нуля — Gradle с JUnit 5 и Jupiter Selenium
Далее:
- Использование встроенной в
PageFactory
для реализации шаблона объекта Page - Улучшение конфигурации проекта — параллельное выполнение тестов, порядок выполнения тестов, параметризованные тесты, AssertJ и многое другое
Исходный код этого руководства можно найти на Github.
Предпосылки
Прежде всего, требуется Java JDK, и он должен быть установлен в вашей системе. Я буду использовать Java 12 и рекомендую установить OpenJDK вместо Oracle JDK из-за изменений в лицензировании Java 11. Вам также понадобится Gradle для запуска нового проекта и вашей любимой Java IDE — я рекомендую IntelliJ IDEA Community или Professional. При желании вы также можете установить систему контроля версий Git .
Для управления (установки, обновления, удаления) инструментов я рекомендовал использовать менеджер пакетов. Если вы работаете в Windows, вы можете использовать Chocolately , если вы используете MacOS, вы должны использовать Homebrew .
Подводя итог, убедитесь, что у вас установлены и доступны следующие инструменты при работе с проектом в этой статье:
- Java JDK — рекомендуется самая новая версия Java JDK
- Gradle — требуется только для настройки проекта, рекомендуется Gradle 5.6+
- Ваш любимый Java IDE — IntelliJ IDEA Community или Professional рекомендуется
- Браузер Chrome — для запуска тестов Selenium
- Terminal Emulator — для выполнения команд оболочки с минимальной базовой поддержкой команд Unix. В Windows это может быть Cmder (с Git), в macOS я рекомендую iTerm2
- Git — если вы хотите отслеживать историю вашего исходного кода
Настройте проект с нуля
Чтобы создать пустой проект на основе Gradle, откройте ваш любимый терминал и введите:
1
2
3
|
mkdir junit5-selenium-todomvc-demo cd junit5-selenium-todomvc-demo gradle init --type basic --dsl groovy |
Сгенерированный проект — пустой, сделай сам проект — без плагинов и никаких зависимостей. Он поставляется с избыточным settings.gradle
который можно удалить:
1
|
rm settings.gradle |
Java и JUnit 5
Для базовой конфигурации проекта Java с JUnit 5 добавьте следующее содержимое в build.gradle
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
plugins { id 'java' } repositories { mavenCentral() } dependencies { testImplementation( 'org.junit.jupiter:junit-jupiter:5.5.1' ) } test { useJUnitPlatform() testLogging { events "passed" , "skipped" , "failed" } } |
Приведенный выше DSL настраивает подключаемый модуль Gradle для Java ( plugins
), который предоставляет нам возможности для создания проектов на основе Java с помощью Gradle. В проекте используется репозиторий Maven ( repositories
) для загрузки проектных зависимостей ( dependencies
), которые объявлены в проекте. Зависимость реализации теста для проекта установлена в JUnit 5 ( testImplementation
), и задача корректируется ( test
), чтобы убедиться, что JUnit 5 используется при выполнении тестов с Gradle.
Конфигурация может быть проверена путем выполнения сборки Gradle в терминале:
1
|
./gradlew build |
Сборка прошла успешно:
1
2
|
BUILD SUCCESSFUL in 0s 1 actionable task: 1 executed |
./gradlew
запускает Gradle Wrapper вместо глобального распространения Gradle. Проект был сгенерирован с помощью Gradle Wrapper, и поэтому глобальное распространение Gradle вообще не требуется для выполнения задач и работы с проектом.
Примечание. Если вы ищете шаблоны проектов JUnit 5 для Gradle или Maven, обратитесь к официальному репозиторию JUnit 5 Samples Github: https://github.com/junit-team/junit5-samples.
Юнит Юпитер
Чтобы упростить настройку Selenium WebDriver в проекте, я собираюсь использовать Selenium Jupiter, который является расширением JUnit 5, предназначенным для облегчения использования Selenium (WebDriver и Grid) в тестах JUnit 5. Он представляет собой отдельную зависимость, которую необходимо добавить в список зависимостей в build.gradle
:
1
2
3
|
dependencies { testCompile( 'io.github.bonigarcia:selenium-jupiter:3.3.0' ) } |
Библиотека Selenium Jupiter обеспечивает интеграцию с Selenium и Appium. Selenium Jupiter поддерживает локальные и удаленные браузеры, браузеры в контейнерах Docker (требуется механизм Docker), а также конфигурацию браузера на основе Selenide. Он использует WebDriverManager для управления драйверами браузера.
Примечание: не удивляйтесь, увидев много библиотек в вашем проекте. Селний Юпитер имеет много зависимостей. Чтобы увидеть все зависимости проекта (включая транзитивные зависимости), выполните следующую команду: ./gradlew dependencies
.
Каталоги и файлы проекта
Проект был создан без исходных файлов Java. Для создания исходного каталога и первого теста могут быть выполнены следующие команды:
1
2
|
mkdir -p src/test/java/pl/codeleak/demos/selenium/todomvc touch src/test/java/pl/codeleak/demos/selenium/todomvc/SeleniumTest.java |
Файл SeleniumTest.java
содержит очень простой тест, подтверждающий, что проект настроен правильно. В тесте используется расширение JUnit 5, предоставленное Selenium Jupiter, и оно имеет один тест без утверждений:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
package pl.codeleak.demos.selenium.todomvc; import io.github.bonigarcia.seljup.SeleniumExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.openqa.selenium.chrome.ChromeDriver; @ExtendWith (SeleniumExtension. class ) class SeleniumTest { @Test void projectIsConfigured(ChromeDriver driver) {} } |
Запуск теста
Выполнение сборки Gradle должно подтвердить прохождение теста:
1
2
3
4
5
6
|
./gradlew build pl.codeleak.demos.selenium.todomvc.SeleniumTest > projectIsConfigured() PASSED BUILD SUCCESSFUL in 1s 3 actionable tasks: 2 executed, 1 up-to-date |
Вы, вероятно, заметили, что во время выполнения задачи браузер Chrome был открыт, а затем закрыт. Это только подтверждает, что вся конфигурация драйвера была выполнена под капотом Selenium Jupiter (с использованием библиотеки WebDriverManager). Вы также заметили, что для этого теста нет кода настройки и очистки. Вместо этого мы внедряем экземпляр ChromeDriver непосредственно в тест, где он необходим. Вот как Selenium Jupiter использует механизм расширения JUnit 5 для ввода параметров для тестирования.
Создать Git-репозиторий
Начальная настройка проекта завершена. Перед началом реальной работы настройки проекта можно сохранить в репозитории Git. Если у вас установлен Git, выполните следующую команду, чтобы создать новый репозиторий:
1
|
git init |
Отредактируйте файл .gitignore
чтобы исключить файлы и каталоги, которые вы хотите пропустить из репозитория:
1
2
3
4
5
|
.gradle .idea *.iml build out |
Выполните следующую команду, чтобы добавить и зафиксировать файлы в хранилище:
1
2
|
git add . git commit -m 'Initial project setup' |
Импорт проекта в IDE
Обратите внимание, что до сих пор вся работа была выполнена без IDE (не совсем верно — тест, который я создал с помощью IDE). В общем, это очень важный аспект конфигурации проекта: всегда делайте свой IDE проекта независимым. Докажите, что вы можете выполнить сборку с помощью одной команды оболочки. Это окупится, особенно если вы собираетесь выполнить сборку с использованием инструмента непрерывной интеграции.
В любом случае, с IntelliJ проект будет работать без проблем. Просто пообедайте, откройте каталог с проектом и импортируйте его как проект Gradle.
И теперь вы готовы приступить к разработке тестов и улучшению проекта. Но помните, что если вы вносите какие-либо изменения в конфигурацию, рекомендуется время от времени проверять их с помощью терминала за пределами IDE.
Следующие шаги
В следующей части этого руководства вы узнаете некоторые основы шаблонов объектов страниц и их реализации с использованием встроенного в PageFactory
.
Смотрите оригинальную статью здесь: JUnit 5 и Selenium — Настройте проект с помощью Gradle, JUnit 5 и Jupiter Selenium Мнения, высказанные участниками Java Code Geeks, являются их собственными. |