在接手微信 H5 自动化测试之初,我们沿用了业界常见的 Appium 方案,但很快踩到了三个难以绕过的坑:
Appium Server + Node.js + 各平台 Driver 的环境链路长、依赖繁琐;Desired Capabilities 配置项多且易错,安装过程耗时耗力,环境一致性难以保证。为了更轻量化地控制设备,我们引入了 ——一个基于 Python、深度封装 Google 官方 UI Automator 的 Android 自动化框架。

d(text='设置').click())、功能完备(多设备并行、截图录屏、手势模拟、UI 层级分析)。核心思想一句话概括:摒弃对 DOM 结构的依赖,模拟人类视觉交互逻辑。
通过 OCR 识别屏幕上的文本,精准计算目标位置坐标,直接驱动设备执行点击操作。这样做带来三个直接收益:
整个执行闭环只有五步:
01 屏幕截图 → 02 OCR 识别 → 03 文本匹配 → 04 坐标计算 → 05 模拟点击
实时捕获当前画面 提取画面所有文本 检索目标关键词 定位目标中心点 执行设备触控操作

OCR 引擎扫描屏幕像素,识别出文字区域后会返回一个精确的矩形框(Bounding Box)。这个矩形框由四个关键坐标定义边界:
Left(左)、Top(上)、Right(右)、Bottom(下)为了实现精准点击,只需计算区域中心:
X = (Left + Right) / 2
Y = (Top + Bottom) / 2
得到的就是目标文字的像素级中心点击坐标。整个过程完全不关心页面是 H5 还是原生,也不关心 DOM 长什么样。
确定方向后,我们调研了四个主流开源 OCR 引擎。

0.93–1.0s / 张。基于 ONNX Runtime 推理,极致轻量化,启动速度快、内存占用低,在移动端与边缘设备表现优异。PaddleOCR(CPU 模式):约 1.75–1.80s / 张。原生框架功能丰富但体积较大,纯 CPU 环境下推理耗时较高,更适合离线批量处理。
极致性能: CPU 推理速度比原生 PaddleOCR 快 4–5 倍,单张图处理低至 0.21 秒;基于 PP-OCRv5,中文识别准确率达 98.7%。
轻量部署: 核心安装包仅 14.9MB,内存占用峰值约 500MB,支持 INT8 模型量化进一步压缩。
全平台覆盖: 支持 Windows、Linux、macOS、Android、iOS,提供 Python、C++、Java、C# 等多语言 API。
极简易用: 核心 OCR 功能仅需 3 行代码,集成门槛极低。
活跃社区: GitHub 超 7,500 Star,高频更新,每月 PyPI 下载超 330 万。
数据来源:官方数据
可以把上一次识别信息存在self.results这个实例变量中,当is_ocr is False时就不调用识别接口,直接查询结果
# 是否重新识别 若是同一个页面没有布局变化时可不重新识别 True重新识别
if is_ocr:
self.results = self.recognize_text()
核心痛点:
1 文本类天然适配多机型
2 面对"+"号、语音键等无文本的纯图标按钮,传统 OCR 因为识别不到文字而失效。而且不同手机分辨率不一样导致其他机型不一定可以定位到。
非文本类多机型定位解法分两步:
实现(consult_chat_page.py):
# 定位锚点并计算偏移量
matches = self.ocr_service.find_text(text="输入文本", is_ocr=True)
x, y = (matches[0].center_x, matches[0].center_y)
self.click_with_offset(x, y, offset_x=0.63, offset_y=0) # 向右偏移 63%
核心痛点: 如 支付时手机截图或者录取视频是黑屏
坐标获取:adb shell settings put system pointer_location 1
点击密码时策略
0.15~0.6 秒,复刻真人思考和操作的时间节奏。核心实现:
def click_password_key(key):
x1, x2, y1, y2 = KEY_AREAS[key] # 定义按键区域百分比
x = random.randint(int(x1 * screen_w), int(x2 * screen_w))
y = random.randint(int(y1 * screen_h), int(y2 * screen_h))
device.click(x, y)
time.sleep(random.uniform(0.15, 0.6)) # 随机延迟
iautomator2 是 Android 平台专属的自动化框架
鸿蒙平台可调研 HMNextAuto https://github.com/ziguiway/hmnextauto
IOS 平台可调研 tidevice + facebook-wda https://github.com/openatx/facebook-wda