# playwright **Repository Path**: code_syx/playwright ## Basic Information - **Project Name**: playwright - **Description**: 基于playwright的ui自动化框架 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2024-11-10 - **Last Updated**: 2026-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Playwright 自动化测试框架 基于 Playwright 的 UI 自动化测试框架,采用 Page Object Model (POM) 设计模式,支持 Web 自动化测试、数据驱动测试、API 测试等功能。 ## 功能特性 - **Page Object Model**: 封装页面元素和操作,支持模块化管理 - **数据驱动测试**: 支持 Excel、YAML 等多数据源 - **API 测试**: 内置 HTTP 客户端,支持接口测试和监听 - **数据库支持**: 支持 MySQL、Oracle 数据库操作 - **智能等待**: 自动处理元素等待和重试机制 - **测试报告**: 集成 Allure 报告生成 - **飞书通知**: 测试完成后自动发送报告到飞书 - **日志系统**: 完整的日志记录功能 - **多种定位器**: 支持 CSS、XPath、role、text 等多种元素定位方式 ## 项目结构 ``` playwright01/ ├── conftest.py # pytest 配置和 fixtures ├── run.py # 测试运行脚本 ├── run2.py # 备用运行脚本 ├── pytest.ini # pytest 配置文件 ├── requirements.txt # 依赖包 ├── module/ # 页面对象模型 │ ├── BasePage.py # 基础页面类 │ ├── BaiduPage.py # 百度页面对象 │ ├── LoginPage.py # 登录页面对象 │ ├── ProjectPage.py # 项目页面对象 │ ├── OrderPage.py # 订单页面对象 │ ├── FramePage.py # iframe 页面对象 │ ├── locators.py # 定位器管理 │ ├── table.py # 表格操作类 │ ├── mall/ # 商城模块 │ └── cat2bug/ # 猫片模块 ├── testcases/ # 测试用例 │ ├── testdemo/ # 示例测试 │ ├── mall/ # 商城测试用例 │ └── cat2bug/ # 猫片测试用例 ├── demo/ # 示例代码 │ ├── my_search_baidu.py │ ├── pw_action_test.py │ ├── pw_locator_test.py │ └── wx_demo/ # 微信 demo ├── utils/ # 工具类 │ ├── api_listener.py # API 监听 │ ├── bug_helper.py # Bug 辅助创建 │ ├── db_queries.py # 数据库查询 │ ├── db_util.py # 数据库工具 │ ├── feishu_robot.py # 飞书机器人 │ ├── http_util.py # HTTP 客户端 │ ├── logger.py # 日志工具 │ ├── my_date.py # 时间工具 │ ├── pattern_util.py # 文本处理工具 │ ├── FileUploadUtils.py # 文件上传 │ └── globalMap.py # 全局变量 └── data_module/ # 测试数据 ├── auth_Data.py # 认证数据 ├── project_Data.py # 项目数据 └── globalconfig.py # 全局配置 ``` ## 快速开始 ### 安装依赖 ```bash pip install -r playwright01/requirements.txt ``` ### 安装 Playwright 浏览器 ```bash playwright install ``` ### 运行测试 ```bash # 运行所有测试 cd playwright01 pytest # 运行指定测试文件 pytest testcases/testdemo/test_login.py # 生成 Allure 报告 allure serve results ``` ## 核心模块说明 ### Page Object Model 框架提供基础页面类 `PageObject`,封装了常见的页面操作: ```python from playwright01.module.BasePage import PageObject class LoginPage(PageObject): def login(self, user, pwd): self.el_input("用户名", user) self.el_input("密码", pwd) self.click_button("登录") ``` ### API 测试 ```python from playwright01.utils.http_util import HttpClient client = HttpClient(base_url="https://api.example.com") response = client.get("/users") ``` ### 数据库操作 ```python from playwright01.utils.db_util import DatabaseUtil db = DatabaseUtil( host="localhost", user="root", password="password", database="test_db" ) result = db.execute_query("SELECT * FROM users") ``` ## 配置文件 在 `conftest.py` 中配置测试环境: - `base_url`: 测试基础 URL - `browser`: 浏览器类型 (chromium/firefox/webkit) - `device`: 设备模拟 - `ui_timeout`: UI 操作超时时间 - `headless`: 是否无头模式运行 ## 报告与通知 框架支持生成 Allure 测试报告,并通过飞书机器人发送测试结果: ```bash python run.py ``` ## 测试用例示例 ```python import pytest from playwright01.module.LoginPage import LoginPage @pytest.mark.parallel def test_login(new_context): page = new_context.new_page() login_page = LoginPage(page) login_page.login("admin", "password") ``` ## 技术栈 - **Playwright**: 浏览器自动化 - **pytest**: 测试框架 - **Allure**: 测试报告 - **httpx**: HTTP 客户端 - **SQLAlchemy**: 数据库 ORM ## 许可证 MIT License