# automation-architecture **Repository Path**: wsaicyj/automation-architecture ## Basic Information - **Project Name**: automation-architecture - **Description**: 使用 Java 和 Playwright 的即用型 UI 测试自动化架构 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-24 - **Last Updated**: 2025-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Playwright Java 测试自动化架构 使用 Java 和 Playwright 的即用型 UI 测试自动化架构。 特征 基于配置的架构 利用页面对象和页面组件对象 数据驱动 测试失败时截取屏幕截图 记录测试执行的视频 提供详细的测试报告 支持并行测试执行 安装步骤 为了使用该框架: 分叉存储库。 克隆,即将存储库副本下载到本地计算机 git clone https://github.com/[your_username]/playwright-java-test-automation-architecture.git 在 IntelliJ IDEA 中导入项目。 进行您想要的更改。 使用 IntelliJ IDEA 运行所需的测试。或者,您也可以使用终端运行测试,例如,使用 ./gradlew test -Dbrowser=firefox -Dheadless=false 在 Firefox 浏览器的 Headed 模式下运行所有测试。 使用以下方式构建和浏览魅力报告 ./gradlew allureServe 语言和框架 该项目采用以下内容: Java 作为编程语言。 Playwright 作为使用 Java 绑定的 Web 浏览器自动化框架。 Univocity 解析器用于解析和处理 CSV 文件。 JUnit 5 作为测试框架。 Lombok 生成 getters。 所有者尽量减少处理属性文件的代码。 Allure Report 作为测试报告策略。 Gradle 作为 Java 构建工具。 IntelliJ IDEA 作为 IDE。 项目结构 该项目结构如下: 📦 playwright-java-test-automation-architecture ├─ .github │ ├─ FUNDING.yml │ ├─ dependabot.yml │ └─ workflows │ └─ test-execution.yml ├─ .gitignore ├─ LICENSE ├─ README.md ├─ build.gradle ├─ gradle │ └─ wrapper │ ├─ gradle-wrapper.jar │ └─ gradle-wrapper.properties ├─ gradlew ├─ gradlew.bat ├─ settings.gradle └─ src ├─ main │ ├─ java │ │ └─ io │ │ └─ github │ │ └─ tahanima │ │ ├─ config │ │ │ ├─ Configuration.java │ │ │ └─ ConfigurationManager.java │ │ ├─ factory │ │ │ ├─ BasePageFactory.java │ │ │ └─ BrowserFactory.java │ │ ├─ fixture │ │ │ ├─ BaseFixture.java │ │ │ ├─ LoginFixture.java │ │ │ └─ ProductsFixture.java │ │ ├─ report │ │ │ └─ AllureManager.java │ │ ├─ ui │ │ │ ├─ component │ │ │ │ ├─ BaseComponent.java │ │ │ │ ├─ Header.java │ │ │ │ └─ SideNavMenu.java │ │ │ └─ page │ │ │ ├─ BasePage.java │ │ │ ├─ LoginPage.java │ │ │ └─ ProductsPage.java │ │ └─ util │ │ └─ BrowserManager.java │ └─ resources │ ├─ allure.properties │ └─ config.properties └─ test ├─ java │ └─ io │ └─ github │ └─ tahanima │ ├─ annotation │ │ ├─ Regression.java │ │ ├─ Smoke.java │ │ ├─ TestDataSource.java │ │ └─ Validation.java │ ├─ e2e │ │ ├─ BaseTest.java │ │ ├─ LoginTest.java │ │ └─ ProductsTest.java │ └─ util │ ├─ TestDataArgumentsProvider.java │ └─ TestFixtureCsvLoader.java └─ resources ├─ junit-platform.properties └─ testdata ├─ login.csv └─ products.csv 基本用法 配置 该项目使用 config.properties 文件来管理全局配置,例如浏览器类型和基本 URL。 要添加新属性,请在此文件中注册一个新条目。 key=value 然后,按照以下格式在配置接口中添加一个方法。 @Key("key") dataType key(); 例如,假设我想添加一个名为 context 、值为 dev 新属性。在 config.properties 文件中,我将添加: context=dev 在 Configuration 界面中,我将添加: @Key("context") String context(); 要使用新创建的属性,您需要使用以下导入语句。 import static io.github.tahanima.config.ConfigurationManager.config; 然后,您可以调用 config().key() 来检索新创建的属性的值。对于我提供的示例,我需要调用 config().context() 。 您可以通过 gradle 将 config.properties 文件中的属性作为测试中的系统属性提供。 ./gradlew test -Dkey1=value1 -Dkey2=value2 测试数据 该项目使用 csv 文件存储测试数据,并使用 univocity-parsers 检索数据并将其映射到 Java bean。 要添加新测试数据的配置,请在 Fixture 包中添加一个新的 Java Bean。例如,假设我想为具有 First Name 和 Last Name 属性的 User 添加测试数据。代码如下: package io.github.tahanima.fixture; import com.univocity.parsers.annotations.Parsed; import lombok.Getter; import lombok.ToString; @Getter @ToString(callSuper = true) public class UserFixture extends BaseFixture { @Parsed(field = "First Name", defaultNullRead = "") private String firstName; @Parsed(field = "Last Name", defaultNullRead = "") private String lastName; } 请注意,该类从 BaseFixture 扩展而来,因此继承了属性 Test Case ID 。 现在,在 testdata 文件夹中,您可以为 User 添加一个包含以下内容的 csv 文件 user.csv ,并在测试中使用它。 Test Case ID,First Name,Last Name TC-1,Tahanima,Chowdhury 作为参考,请查看这个 、 这个和这个 。 页面对象和页面组件对象 该项目使用页面对象和页面组件对象来捕获网页的相关行为。请查看 ui 包以获取参考。 测试 该项目使用 JUnit 5 作为测试运行器。请查看此实现以供参考。