Kto-Blog
Published on

WindroidTAP: 跨平台自动化测试框架

Authors
  • avatar
    Name
    Kto

WindroidTAP: 跨平台自动化测试框架

前言

在当今快速发展的软件开发领域,自动化测试已经成为保证软件质量的重要手段。今天为大家介绍一个强大的跨平台自动化测试框架 - WindroidTAP,它能够同时支持 Windows 和 Android 平台的自动化测试需求。

框架简介

WindroidTAP 是一个创新性的自动化测试框架,它的主要目标是为测试工程师提供一个统一的接口来处理 Windows 和 Android 平台的自动化测试任务。通过这个框架,我们可以大大简化测试流程,提高开发效率,同时确保应用在不同操作系统上的稳定性和兼容性。

核心特性

1. 统一的操作接口

  • 提供一致的API来处理不同平台的自动化操作
  • 支持鼠标点击、键盘输入、截图等基础功能
  • 降低学习成本,提高开发效率

2. 跨平台支持

  • 完整支持 Windows 桌面应用程序测试
  • 全面支持 Android 移动应用程序测试
  • 一套代码,多平台运行

3. 灵活的扩展性

  • 采用模块化设计,易于扩展新功能
  • 支持自定义操作和测试场景
  • 可根据项目需求进行定制化开发

4. Android设备创新控制方案

  • 通过自研 blecom APK 获取设备屏幕图像
  • 使用蓝牙HID设备进行精确操控
  • 支持多设备并行控制

APK界面展示

wubdroidTAP_APP

点击查看 WindroidTAP APK主界面

快速上手指南

环境准备

# 克隆项目
git clone https://github.com/ktovoz/WindroidTAP.git
cd WindroidTAP

# 安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

代码示例

Windows应用测试

from baseutil.platform_operator import PlatformOperator

def test_notepad():
    # 初始化Windows操作器
    op = PlatformOperator('windows', window_title='记事本')

    # 执行测试操作
    op.input_text('测试文本')
    op.hotkey('ctrl', 's')

Android应用测试

from baseutil.platform_operator import PlatformOperator

def test_android_app():
    # 初始化Android操作器
    op = PlatformOperator('app', ip='127.0.0.1')

    # 执行测试操作
    op.click(100, 200)
    op.swipe(100, 500, 100, 100)

项目依赖说明

核心依赖

  • loguru: 提供简单且功能强大的日志记录功能
  • pillow: 图像处理基础库
  • pywin32: Windows系统API扩展
  • keyboard: 键盘事件监听与控制

可选依赖

  • paddleocr: 高精度OCR文字识别功能
  • PaddlePaddle: 深度学习框架,支持OCR模型
  • pyside6: Qt框架的Python绑定
  • python-dotenv: 环境变量管理

详细项目结构说明

WindroidTAP/
├── framework/                     # 核心代码
│   └── baseutil/                 # 基础工具
│       ├── app/                  # Android平台相关
│       │   └── app_OP.py         # Android操作实现
│       └── win/                  # Windows平台相关
│           └── winOperate/       # Windows操作实现
├── blecom.apk                    # Android设备控制APK
├── docs/                         # 文档
├── examples/                     # 示例代码
├── tests/                        # 测试用例
├── requirements.txt              # 项目依赖
└── README.md                     # 项目说明

核心模块说明

  1. framework/baseutil/
  • 框架的核心功能实现
  • 包含跨平台操作的基础类和工具函数
  • 提供统一的接口定义和实现
  1. app/app_OP.py
  • Android设备操作的具体实现
  • 包含屏幕控制、触摸模拟等功能
  • 负责与blecom APK的通信
  1. win/winOperate/
  • Windows平台的自动化操作实现
  • 提供窗口操作、键鼠模拟等功能
  • 系统API的封装和优化

详细安装配置指南

1. Python环境配置

# 推荐使用Python 3.7+
python -V  # 检查Python版本

# 更新pip
python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 虚拟环境设置(推荐)

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate

3. 安装核心依赖

# 安装基础依赖
pip install loguru pillow pywin32 keyboard -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装OCR相关依赖(可选)
pip install paddleocr paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装GUI开发依赖(可选)
pip install pyside6 -i https://pypi.tuna.tsinghua.edu.cn/simple

高级使用指南

1. 元素定位策略

WindroidTAP提供多种元素定位方式:

from baseutil.platform_operator import PlatformOperator

def advanced_element_location():
    op = PlatformOperator('windows', window_title='测试窗口')

    # 1. 坐标定位
    op.click(100, 200)

    # 2. 图像识别定位
    op.click_image('button.png')

    # 3. OCR文字识别定位
    op.click_text('登录')

2. Android设备配置

blecom APK安装步骤:

  1. 下载blecom.apk到Android设备
  2. 安装APK并授予必要权限
  3. 配置蓝牙HID设备连接
  4. 启动服务并记录设备IP地址

示例代码:

def android_device_setup():
    # 初始化Android设备操作
    op = PlatformOperator('app', ip='192.168.1.100')

    # 检查设备连接状态
    if op.check_connection():
        print("设备连接成功")

        # 执行测试操作
        op.swipe(100, 500, 100, 100)  # 上滑操作
        op.press_key('home')          # 按下Home键
        op.screenshot('test.png')     # 截图保存

3. 自定义操作扩展

框架支持自定义操作扩展,示例如下:

from baseutil.platform_operator import PlatformOperator

class CustomOperator(PlatformOperator):
    def __init__(self, platform, **kwargs):
        super().__init__(platform, **kwargs)

    def custom_action(self, param1, param2):
        """自定义操作实现"""
        # 实现自定义操作逻辑
        pass

性能优化建议

  1. 图像识别优化
  • 使用较小的目标图片
  • 适当调整匹配阈值
  • 缓存常用图片模板
  1. 操作延时处理
  • 根据设备性能调整操作间隔
  • 使用动态等待机制
  • 避免固定延时等待
  1. 资源管理
  • 及时释放截图等大型对象
  • 适当使用连接池
  • 控制并发操作数量

最佳实践

1. 测试用例组织

def test_suite():
    # 初始化操作器
    op = PlatformOperator('windows')

    try:
        # 测试准备
        setup_test_environment()

        # 执行测试用例
        test_case_1(op)
        test_case_2(op)

        # 测试清理
        cleanup_test_environment()

    except Exception as e:
        # 异常处理
        handle_test_exception(e)

2. 日志记录

from loguru import logger

def setup_logging():
    logger.add("test_{time}.log",
               rotation="500 MB",
               retention="10 days",
               level="INFO")

def test_with_logging():
    setup_logging()
    logger.info("开始测试")
    try:
        # 测试代码
        pass
    except Exception as e:
        logger.error(f"测试失败: {str(e)}")
    logger.info("测试完成")

未来发展规划

1. Web服务化改造

  • 使用 FastAPI 框架提供 RESTful API
  • 提供 Swagger UI 接口调试界面
  • 支持异步操作和并发任务处理

2. 可视化操作界面

  • 基于 HTML5 的现代化 Web 界面
  • 直观的测试用例编排功能
  • 实时操作预览和结果反馈

3. 测试管理平台

  • 完整的测试用例管理和版本控制
  • 测试结果数据可视化
  • 自动化测试报告生成

4. 持续集成支持

  • CI/CD 流程集成接口
  • 支持主流 CI 平台
  • 自动化测试结果反馈

常见问题解答

  1. 如何处理元素定位问题?
  • WindroidTAP 提供多种元素定位方式,包括坐标定位和图像识别定位。
  1. 支持哪些 Android 设备?
  • 支持所有可安装 blecom APK 且可连接蓝牙HID设备的 Android 设备。
  1. blecom APK 如何工作?
  • blecom APK 在 Android 设备上运行,负责截取屏幕图像并通过网络传输,同时控制蓝牙HID设备执行具体的操作指令。

结语

WindroidTAP 是一个充满潜力的自动化测试框架,它的跨平台特性和统一接口设计使其成为自动化测试领域的一个重要工具。如果您在使用过程中遇到任何问题,欢迎通过以下方式联系我们:

如果这个项目对您有帮助,欢迎给我们一个 Star ⭐️!

#自动化测试 #Python #Windows #Android #测试框架