MCP硒自动化框架
一个用于web应用程序测试的全面的Selenium测试自动化框架,使用页面对象模型、Cucumber BDD、TestNG和Google Guice进行依赖注入。
目录
项目结构
mcp-selenium-automation/
├── pom.xml
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── mcp/
│ │ │ ├── config/
│ │ │ │ ├── ConfigurationManager.java
│ │ │ │ ├── DriverManager.java
│ │ │ │ └── GuiceModule.java
│ │ │ ├── constants/
│ │ │ │ ├── BrowserType.java
│ │ │ │ └── TimeoutConstants.java
│ │ │ ├── pages/
│ │ │ │ ├── BasePage.java
│ │ │ │ ├── GoogleHomePage.java
│ │ │ │ ├── GoogleSearchResultsPage.java
│ │ │ │ └── SearchResultPage.java
│ │ │ └── utils/
│ │ │ ├── PropertyReader.java
│ │ │ └── WaitUtils.java
│ │ └── resources/
│ │ ├── config.properties
│ │ └── log4j2.xml
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── mcp/
│ │ ├── hooks/
│ │ │ └── TestHooks.java
│ │ ├── runner/
│ │ │ └── TestRunner.java
│ │ └── steps/
│ │ ├── SearchResultsSteps.java
│ │ ├── GoogleHomePageSteps.java
│ │ └── GoogleSearchResultsSteps.java
│ └── resources/
│ ├── features/
│ │ └── googel_search.feature
│ └── testng.xml详细结构说明
根系结构
- mcp硒自动化/:项目的根目录。
- pom.xml文件:定义项目依赖关系、构建配置和插件的Maven项目对象模型文件。这对于管理项目的库和构建生命周期至关重要。
源代码结构
该项目遵循Maven的标准目录布局,分为 main (应用程序代码)和 test (测试代码)。
主要源代码
src/main/java/com/mcp/automation/config/
此包包含与配置相关的类:
- 配置管理器.java:
- 实现Singleton模式以确保单个配置实例 - 从加载属性 config.properties 文件 - 为所有配置值提供getter - 存储浏览器设置、URL、搜索词和超时值
- 驱动程序管理器.java:
- 管理WebDriver实例(ChromeDriver、FirefoxDriver、EdgeDriver) - 配置浏览器选项(无头模式,最大化窗口) - 设置超时配置 - 提供获取和退出WebDriver的方法
- GuiceModule.java:
- 用于依赖注入的Google Guice配置 - 将接口绑定到实现 - 为重要类设置单例作用域 - 为需要的组件提供WebDriver实例
src/main/java/com/mcp/automation/constants/
包含常数值和枚举:
- 基于浏览器。:
- 支持的浏览器(CHROME、FIREFOX、EDGE)的枚举 - 提供将字符串浏览器名称转换为枚举的实用方法
- 超时Constants.java:
- 定义各种操作的默认超时值 - 提供将秒转换为Duration对象的方法 - 包含用于短、中、长等待的常量
src/main/java/com/mcp/automation/pages/
实现页面对象模型模式:
- BasePage.java:
- 所有页面对象扩展的抽象类 - 初始化WebElement注释的页面工厂 - 提供常用方法,如click、sendKeys、isElementDisplayed - 处理JavaScript执行和导航
- 谷歌主页.java:
- 代表谷歌的主页 - 包含搜索输入和搜索按钮等元素 - 提供导航到谷歌和执行搜索的方法
- 谷歌搜索结果Page.java:
- 代表谷歌的搜索结果页面 - 查找搜索结果链接并与之交互 - 提供点击搜索结果的方法
- 搜索结果:
- 代表法拉利SF90官方页面 - 包含URL和页面内容的验证方法 - 提供对法拉利特定页面元素的访问
src/main/java/com/mcp/automation/utils/
常见操作的实用程序类别:
- PropertyReader.java:
- 从配置文件加载和读取属性 - 提供类型安全的方法来获取字符串、整数和布尔属性 - 处理默认值和错误情况
- WaitUtils.java:
- 为各种情况提供显式等待实用程序 - 包括等待元素、页面加载和URL更改的方法 - 实施Selenium等待的最佳实践
src/main/resources/
配置文件:
- config.properties:
- 包含可配置选项的键值对 - 包括浏览器设置、URL、搜索词和超时 - 无需更改代码即可轻松修改
- log4j2.xml:
- 用于日志记录的Log4j2配置 - 定义控制台和文件附加器 - 设置日志记录级别和模式
测试源代码
src/test/java/com/mcp/automation/hooks/
黄瓜挂钩用于安装和拆卸:
- TestHooks.java:
- 包含 @Before 和 @After 围绕场景执行的方法 - 处理WebDriver设置和清理 - 对测试失败进行截图
src/test/java/com/mcp/automation/runner/
测试执行配置:
- TestRunner.java:
- TestNG和Cucumber集成 - 定义功能文件位置、粘合代码和插件 - 配置报告生成和并行执行选项
src/test/java/com/mcp/automation/steps/
黄瓜步骤定义类:
- 搜索结果Steps.java:
- 实施与Ferrari SF90页面验证相关的步骤 - 验证URL和页面内容 - 使用AssertJ进行流畅的断言
- 谷歌主页Steps.java:
- 实施Google主页交互的步骤 - 处理谷歌导航 - 执行搜索操作
- GoogleSearchResults Steps.java:
- 实施搜索结果交互的步骤 - 搜索结果点击次数 - 验证搜索结果是否存在
src/test/resources/features/
黄瓜特征文件:
- ferrari_sf90_search.feature:
- 用Gherkin语法定义测试场景 - 包含端到端测试的Given When Then步骤 - 用商业可读语言编写
src/test/resources/
测试配置:
- testng.xml:
- TestNG配置文件 - 定义要执行的测试套件和类 - 配置侦听器和执行选项
框架架构
该框架基于以下架构原则构建:
- 关注点分离:
- 页面处理UI交互 - 步骤定义将Gherkin与代码连接起来 - 配置管理环境设置 - 实用程序提供可重用的辅助方法
- Guice的依赖注入:
- 减少组件之间的紧密耦合 - 通过模拟注入使测试更容易 - 集中对象创建和生命周期管理
- 页面对象模型:
- 每个网页都有一个相应的类 - 封装页面结构和行为 - 使测试在UI更改时更易于维护
- Cucumber的行为驱动开发:
- 用通俗易懂的语言编写的场景 - 通过注释映射到代码的步骤 - 促进技术和非技术利益相关者之间的合作
- 使用TestNG执行测试:
- 强大的测试运行器,支持并行执行 - 测试配置注释 - 与Cucumber集成用于BDD
安装说明
先决条件
- Java JDK 11或更高版本
- Maven 3.6.3或更高版本
- IntelliJ IDEA(推荐)
- 网络浏览器:Chrome、Firefox和/或Edge
安装
- 使用提供的脚本克隆存储库或生成项目:
对于Linux/macOS:
./generate-project.sh对于Windows:
generate-project.bat- 将项目导入IntelliJ IDEA:
- 打开IntelliJ IDEA - 选择“导入项目”或“打开” - 导航至 mcp-selenium-automation 目录 - 选择 pom.xml 文件 - 勾选“自动导入Maven项目” - 按照提示完成导入
- 安装浏览器驱动程序:
- 该框架配置为使用WebDriver Manager,它将自动下载正确的驱动程序
运行测试
使用Maven
使用Maven运行所有测试:
mvn clean test使用特定浏览器运行:
mvn clean test -Dbrowser=chrome使用IntelliJ IDEA
- 导航至
src/test/java/com/mcp/automation/runner/TestRunner.java - 右键单击并选择“运行TestRunner”
使用标签
要运行带有标签的特定测试,请执行以下操作:
mvn clean test -Dcucumber.filter.tags="@search"特性
- 跨浏览器测试:支持Chrome、Firefox和Edge浏览器
- 可配置执行:易于通过属性文件更改设置
- 详细日志记录:使用Log4j2进行全面日志记录
- 故障截图:自动捕获失败测试的屏幕截图
- HTML报告:Cucumber HTML报告,用于更好的测试分析
- 并行执行:支持并行运行测试(可以在TestNG中启用)
- 清晰的关注点分离:遵循测试架构的最佳实践
示例场景
功能:谷歌搜索验证
@搜索@烟雾 场景概述:搜索并验证第一个结果 鉴于我在谷歌主页上 当我搜索““在谷歌上 然后我点击了第一个搜索结果 然后,我应该被重定向到预期结果页面
Examples:
| query |
| test automation framework |
| selenium webdriver |
| Ferrari SF90 |技术
- Selenium WebDriver 4.x
- 黄瓜7.x
- TestNG 7.x
- 谷歌Guice 7.x
- 断言J 3.x
- 龙目
- Log4j2
- 梅文
