# UI_Automator **Repository Path**: michael940517/ui_automator ## Basic Information - **Project Name**: UI_Automator - **Description**: 数字报关厅UI自动化 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-08 - **Last Updated**: 2025-12-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Playwright 自动化测试框架 - Author:李明 - CreateTime:2025.7.31 - 一个基于 Playwright 的现代化 UI 自动化测试框架,支持中文界面和配置。 ## 🚀 特性 - **多浏览器支持**: 支持 Chromium、Firefox、WebKit - **中文界面**: 完整的中文支持和本地化 - **页面对象模式**: 清晰的页面对象设计 - **详细报告**: HTML 格式的测试报告 - **灵活配置**: YAML 配置文件管理 - **日志记录**: 完整的测试日志记录 - **截图功能**: 自动截图保存 ## 📋 环境要求 - Python 3.8+ - Playwright - pytest - pytest-html ## 🛠️ 安装 1. **克隆项目** ```bash git clone cd customs_playwright_framework ``` 2. **创建虚拟环境** ```bash python -m venv myvenv ``` 3. **激活虚拟环境** ```bash # Windows myvenv\Scripts\activate # Linux/Mac source myvenv/bin/activate ``` 4. **安装依赖** ```bash pip install -r requirements.txt ``` 5. **安装 Playwright 浏览器** ```bash playwright install ``` ## ⚙️ 配置 编辑 `config/config.yaml` 文件: ```yaml environment: base_url: "https://example.com" staging_url: "https://staging.example.com" browser: type: "chromium" # 支持 chromium, firefox, webkit headless: true timeout: 30000 language: "zh-CN" # 设置浏览器语言为中文 logging: level: "INFO" output: "reports/logs/info.log" language: "zh-CN" # 设置日志语言为中文 locale: language: "zh-CN" # 设置框架语言为中文 timezone: "Asia/Shanghai" # 设置时区为中国时区 ``` ## 🧪 运行测试 ### 方法一:使用运行脚本 ```bash # 运行所有测试 python run_tests.py # 运行特定类型测试 python run_tests.py smoke python run_tests.py regression python run_tests.py ui # 指定浏览器 python run_tests.py all firefox # 指定无头模式 python run_tests.py all chromium false # 指定运行环境 python run_tests.py all chromium true production python run_tests.py smoke firefox false staging # debug 模式运行 python run_tests.py ui chromium false staging --debug ``` ### 方法二:直接使用 pytest ```bash # 运行所有测试 pytest # 运行冒烟测试 pytest -m smoke # 运行回归测试 pytest -m regression # 生成HTML报告 pytest --html=reports/html_reports/report.html ``` ## 📁 项目结构 ``` customs_playwright_framework/ ├── config/ │ └── config.yaml # 配置文件 ├── data/ │ └── test_data.yaml # 测试数据 ├── pages/ │ ├── base_page.py # 基础页面类 │ ├── login_page.py # 登录页面类 │ └── home_page.py # 首页类 ├── tests/ │ └── test_login.py # 登录测试用例 ├── utils/ │ ├── browser_manager.py # 浏览器管理器 │ ├── config_reader.py # 配置读取器 │ ├── helpers.py # 辅助函数 │ └── logger.py # 日志工具 ├── reports/ │ ├── html_reports/ # HTML测试报告 │ ├── screenshots/ # 截图文件 │ └── logs/ # 日志文件 ├── requirements.txt # 依赖包 ├── pytest.ini # pytest配置 └── run_tests.py # 测试运行脚本 ``` ## 📝 编写测试用例 ### 页面对象模式 ```python from pages.login_page import LoginPage from utils.browser_manager import BrowserManager from utils.logger import setup_logger logger = setup_logger() class TestLogin: """登录功能测试类""" @pytest.fixture(autouse=True) def setup(self): """测试前置设置""" self.browser_manager = BrowserManager() self.page = self.browser_manager.create_page() self.login_page = LoginPage(self.page) logger.info("测试环境初始化完成") yield self.browser_manager.close() logger.info("测试环境清理完成") @pytest.mark.smoke def test_valid_login(self): """测试有效登录""" logger.info("开始执行有效登录测试") # 导航到登录页面 self.login_page.navigate() # 执行登录 self.login_page.login("testuser", "testpass") # 验证结果 assert self.login_page.is_logged_in(), "登录应该成功" logger.info("登录测试通过") ``` ### 测试标记 - `@pytest.mark.smoke`: 冒烟测试 - `@pytest.mark.regression`: 回归测试 - `@pytest.mark.ui`: UI测试 - `@pytest.mark.api`: API测试 ## 📊 测试报告 测试完成后,可以在以下位置查看报告: - **HTML报告**: `reports/html_reports/report_YYYYMMDD_HHMMSS.html` - **日志文件**: `reports/logs/info.log` - **截图文件**: `reports/screenshots/` ## 🔧 自定义配置 ### 添加新的页面对象 1. 在 `pages/` 目录下创建新的页面类 2. 继承 `BasePage` 类 3. 定义页面元素和方法 ### 添加新的测试用例 1. 在 `tests/` 目录下创建测试文件 2. 使用页面对象模式 3. 添加适当的测试标记 ### 配置环境变量 可以通过环境变量覆盖配置: ```bash export BROWSER=firefox export HEADLESS=false export BASE_URL=https://staging.example.com ``` ## 🐛 故障排除 ### 常见问题 1. **浏览器启动失败** - 确保已安装 Playwright 浏览器:`playwright install` - 检查浏览器配置是否正确 2. **元素定位失败** - 检查选择器是否正确 - 增加等待时间 - 使用更稳定的定位策略 3. **中文显示问题** - 确保系统支持中文 - 检查文件编码为 UTF-8 - 验证浏览器语言设置 ### 调试技巧 - 设置 `headless: false` 查看浏览器操作 - 使用 `page.pause()` 暂停执行 - 启用详细日志:`logging.level: "DEBUG"` ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📞 支持 如有问题,请查看: - [Playwright 官方文档](https://playwright.dev/) - [pytest 官方文档](https://docs.pytest.org/) - 项目 Issues 页面