
Как построить модульную структуру селена + огурцы в Java
2 июля 2025 г.Современный QA требует больше, чем просто написание тестовых примеров - это требует масштабируемого, масштабируемого, обслуживания и модульной программы автоматизации. Если вы используетеСелен с Java, интегрировать его сОгурецПриносит структуру и ясность в ваш тестовый дизайн. Но как вы создаете модульную структуру, которая может масштабироваться по проектам и командам?
Это руководство проходит через то, как разработать надежную структуру автоматизации селена + огурца с использованием Java, следуя лучшим практикам в области архитектуры, повторного использования и интеграции CI/CD.
Почему модульный дизайн?
Модульная структура автоматизации:
- ПродвигаетПовторное использование кодаиразделение проблем
- Облегчает техническое обслуживание тестирования, когда произойдут изменения пользовательского интерфейса
- Позволяет выполнять параллельное и CI-тестовое выполнение
- Поощряет чистое сотрудничество между QA, DEV и Business Teams
Рекомендуемая структура папок
Вот логическая структура, чтобы сохранить кодовую базу чистой и масштабируемой:
lua
CopyEdit
src/test/java
├── base --> Base classes (WebDriver setup, Hooks)
├── pages --> Page Object classes
├── stepdefinitions--> Step definitions for Gherkin steps
├── runners --> Test runners (Cucumber options)
├── utils --> Utilities like config reader, wait, logs
├── features --> Gherkin (.feature) files
Технический стек
ComponentToolui AutomationsElenium webdriverbddcucumber + gherkinlanguagejavabuild toolmaven
Gradletest Reportingallure
ExtentReportSci/Cdjenkins
Действия GitHub
Настройка Webdriver & Hooks
Базовый класс: Централизованная настройка WebDriver
java
CopyEdit
public class BaseTest {
public static WebDriver driver;
public void initializeDriver() {
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
public void tearDown() {
driver.quit();
}
}
Крюк класс: Бежать до и после каждого сценария
java
CopyEdit
public class Hooks {
BaseTest base = new BaseTest();
@Before
public void setup() {
base.initializeDriver();
}
@After
public void cleanUp() {
base.tearDown();
}
}
Модель объекта страницы (POM)
Помогает инкапсулировать локаторы и действия элемента:
java
CopyEdit
public class LoginPage {
WebDriver driver;
@FindBy(id = "username") WebElement username;
@FindBy(id = "password") WebElement password;
@FindBy(id = "login") WebElement loginBtn;
public LoginPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
public void login(String user, String pass) {
username.sendKeys(user);
password.sendKeys(pass);
loginBtn.click();
}
}
Файл функций (сценарий BDD)
gherkin
CopyEdit
Feature: Login functionality
Scenario: Successful login with valid credentials
Given User is on login page
When User enters valid credentials
Then User is navigated to the homepage
Шаг Определения
java
CopyEdit
public class LoginSteps {
WebDriver driver = BaseTest.driver;
LoginPage login = new LoginPage(driver);
@Given("User is on login page")
public void userIsOnLoginPage() {
driver.get("https://example.com/login");
}
@When("User enters valid credentials")
public void userEntersValidCredentials() {
login.login("testuser", "testpass");
}
@Then("User is navigated to the homepage")
public void userIsOnHomePage() {
Assert.assertTrue(driver.getTitle().contains("Dashboard"));
}
}
Интеграция отчетности
Добавить Allure Maven зависимостей:
xml
CopyEdit
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-cucumber6-jvm</artifactId>
<version>2.13.0</version>
</dependency>
Используйте аннотации, как@Step
В@Attachment
Для улучшения тестовой прослеживаемости в отчетах.
CI/CD с Дженкинсом
Создайте работу Jenkins, связанную с вашим хранилищем GIT.
Добавьте шаг Maven Build:clean test
Шаг после строительства: опубликовать результаты Allure
Настройте триггеры для ночных или вытягивания.
Лучшие практики
Использовать@BeforeStep
и@AfterStep
Для мелкозернистых бревна или скриншотов.
Избегайте твердших данных тестовых данных; Встречать в.properties
или файлы Excel.
ОсуществлятьRetryAnalyzer
к автоматическим тщательным тестам.
Запустить тесты впараллельс использованиемTestNG
илиПлагин огурцадля потоков.
Последние мысли
Модульная структура селена + огурцы - это не только более чистый код, а также тестустойчивостьВмасштабируемость, иКоманда сотрудничестваПолем С правильной структурой и интеграциями CI это может стать мощным активом для любой команды автоматизации.
Если вы начинаете, начните с малого и масштабируйте свой фреймворк по частям. Со временем этот структурированный подход сэкономит вам сотни часов при техническом обслуживании и адаптировании тестирования.
Оригинал