Skip to content

carlslin/autotesttools

Repository files navigation

移动应用自动化测试框架

Python License GitHub

一个功能全面的多平台自动化测试框架,支持Android、iOS、WebView和计算机视觉操作。

🚀 特性

  • 多平台支持: Android、iOS、WebView、计算机视觉
  • 统一接口: 提供一致的API接口,简化跨平台开发
  • 智能识别: 集成YOLOv5目标检测和EasyOCR文字识别
  • 跨平台兼容: 支持macOS、Windows、Linux系统
  • 插件系统: 支持自定义插件扩展
  • 工作流引擎: 支持复杂的工作流自动化
  • 多设备管理: 支持多设备并行测试
  • 丰富的工具: 提供CLI工具和丰富的辅助功能
  • 完整文档: 详细的API文档和使用指南
  • 容器化部署: 支持Docker和Kubernetes部署

📦 安装

环境要求

  • Python 3.8+
  • Android SDK (用于Android测试)
  • Xcode (用于iOS测试)
  • Chrome浏览器 (用于WebView测试)

安装依赖

# 克隆项目
git clone git@github.com:carlslin/autotesttools.git
cd autotesttools

# 安装Python依赖
pip install -r requirements.txt

# 或者使用开发模式安装
pip install -e .

Docker安装

# 构建Docker镜像
docker build -t automation-framework .

# 运行容器
docker run -it --rm automation-framework

🎯 快速开始

基础使用

from automation_framework import AutomationFramework

# 初始化框架
framework = AutomationFramework()

# 获取Android驱动
android_driver = framework.get_driver('android')

# 连接设备
android_driver.connect("emulator-5554")

# 启动应用
android_driver.start_app("com.example.app")

# 截图
android_driver.take_screenshot("screenshot.png")

# 关闭框架
framework.close()

计算机视觉自动化

# 获取CV驱动
cv_driver = framework.get_driver('cv')

# 图像识别
element = cv_driver.find_element('button.png')
if element:
    element.click()

# 文字识别
text = cv_driver.extract_text('screenshot.png')
print(f"识别到的文字: {text}")

跨平台鼠标控制

from automation_framework.core.utils.mouse_control import click, move, drag

# 鼠标操作(自动适配不同操作系统)
click(100, 100)  # 点击坐标
move(200, 200)   # 移动鼠标
drag(100, 100, 300, 300, 0.5)  # 拖拽操作

命令行工具

# 查看帮助
python main.py --help

# 连接Android设备
python main.py connect -t android -d emulator-5554

# 图像检测
python main.py detect -i image.jpg -t template.jpg

# 文字识别
python main.py ocr -i image.jpg

# Web操作
python main.py web -u https://www.example.com

# 查看状态
python main.py status

# 运行工作流
python main.py run -f workflow.yaml

📖 详细文档

驱动支持

Android驱动

  • 基于uiautomator2
  • 支持设备连接、应用操作、元素交互
  • 支持截图、坐标操作、文本输入

iOS驱动

  • 基于tidevice和WebDriverAgent
  • 支持设备连接、应用操作
  • 需要配置WebDriverAgent

计算机视觉驱动

  • 集成YOLOv5目标检测
  • 集成EasyOCR文字识别
  • 支持模板匹配、图像预处理

WebView驱动

  • 基于Selenium WebDriver
  • 支持页面导航、元素操作
  • 支持JavaScript执行

元素操作

框架提供了统一的元素操作接口:

# 创建元素
element = framework.create_android_element({
    "type": "id",
    "value": "button_id"
})

# 查找元素
if element.find_element():
    # 点击元素
    element.click()
    
    # 获取文本
    text = element.get_text()
    
    # 检查状态
    is_displayed = element.is_displayed()
    is_enabled = element.is_enabled()

工作流配置

支持YAML格式的工作流配置:

name: "示例工作流"
steps:
  - name: "连接设备"
    type: "connect_device"
    config:
      device_type: "android"
      device_id: "emulator-5554"
  
  - name: "启动应用"
    type: "start_app"
    config:
      device_type: "android"
      package_name: "com.example.app"
  
  - name: "截图"
    type: "screenshot"
    config:
      device_type: "android"
      save_path: "screenshot.png"

配置管理

框架使用YAML配置文件:

# config/framework.yaml
logging:
  level: INFO
  file: "logs/automation.log"

drivers:
  android:
    enabled: true
    timeout: 10
    screenshot_dir: "screenshots/android"
  
  cv:
    enabled: true
    confidence_threshold: 0.5
    ocr_languages: ["en", "ch_sim"]

🛠️ 开发指南

项目结构

autotesttools/
├── src/automation_framework/          # 源代码
│   ├── core/                         # 核心模块
│   │   ├── drivers/                  # 驱动实现
│   │   ├── elements/                 # 元素操作
│   │   ├── services/                 # 服务组件
│   │   └── utils/                    # 工具类
│   ├── plugins/                      # 插件系统
│   ├── scaffold/                     # 脚手架
│   └── cli/                          # 命令行工具
├── tests/                            # 测试代码
├── config/                           # 配置文件
├── examples/                         # 示例代码
├── docs/                             # 文档
├── k8s/                              # Kubernetes部署配置
├── scripts/                          # 部署脚本
├── .github/workflows/                # CI/CD流水线
├── requirements.txt                  # 依赖列表
├── Dockerfile                        # Docker配置
└── main.py                           # 主入口文件

添加新驱动

  1. 继承BaseDriver
  2. 实现必要的抽象方法
  3. AutomationFramework中注册
class CustomDriver(BaseDriver):
    def initialize(self) -> bool:
        # 实现初始化逻辑
        pass
    
    def connect(self, device_id: str) -> bool:
        # 实现连接逻辑
        pass
    
    # 实现其他必要方法...

添加新元素类型

  1. 继承BaseElement
  2. 实现元素操作方法
  3. 在框架中注册
class CustomElement(BaseElement):
    def find_element(self, timeout: int = None) -> bool:
        # 实现元素查找逻辑
        pass
    
    def click(self) -> bool:
        # 实现点击逻辑
        pass
    
    # 实现其他必要方法...

🧪 测试

# 运行所有测试
pytest

# 运行特定测试
pytest tests/unit/test_drivers.py

# 生成覆盖率报告
pytest --cov=src/automation_framework --cov-report=html

📊 性能监控

框架内置性能监控功能:

  • 内存使用监控
  • CPU使用监控
  • 响应时间统计
  • 错误率统计

🔧 故障排除

常见问题

  1. Android设备连接失败

    • 检查ADB连接
    • 确认设备已启用USB调试
    • 检查uiautomator2服务
  2. iOS设备连接失败

    • 检查WebDriverAgent配置
    • 确认设备已信任开发者证书
    • 检查tidevice连接
  3. 图像识别准确率低

    • 调整置信度阈值
    • 优化图像质量
    • 更新AI模型

日志调试

# 启用详细日志
framework = AutomationFramework()
framework.set_config("logging.level", "DEBUG")

🤝 贡献

欢迎贡献代码!请遵循以下步骤:

  1. Fork项目
  2. 创建特性分支
  3. 提交更改
  4. 推送到分支
  5. 创建Pull Request

📄 许可证

本项目采用MIT许可证。详见LICENSE文件。

📞 支持

🎉 致谢

感谢以下开源项目的支持:


版本: 1.0.0
最后更新: 2024年1月
维护者: carlslin
仓库: carlslin/autotesttools

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published