一个测试人必备的APP 测试Skills,效果很惊艳(附详细实操和获取方式)
一、测试工程师的日常困境
作为一名测试工程师,你一定遇到过这样的场景:帮我回归一下购物车那条链路。
打开 APP,从首页开始:搜索商品 → 进详情页 → 加购 → 下单确认。好,5 分钟过去了。
每次迭代至少三轮,一周下来,光这一条链路的回归就超过 1 小时。
你知道该做自动化。
但当你真正动手时,第一步就卡住了,这个按钮的 ID 是什么?
打开 UIAutomatorViewer,连设备,截图加载失败。换 Appium Inspector,连上了,控件树里全是 FrameLayout 嵌套,翻三层都找不到一个稳定的 resource-id。随便填一个,跑起来 NoSuchElementException。再找,再试。一个元素定位,折腾一小时。
更让人崩溃的是:
-
好不容易定位到了,APP 一次版本迭代,控件 id 变了,用例直接全挂
-
Weex 渲染的页面,UiAutomator 根本看不到里面的元素,白折腾
-
换一个 APP,又要重新找一遍,工具链无法复用
-
每次想搭自动化,光环境配置就能劝退半天
这是 APP 自动化测试最真实的第一道坎:元素定位的根本性障碍。
今天这篇文章,说说我是怎么用dump-ui + prd-to-test一套Skills工具链把这道坎直接绕开的。
二、dump-ui 是什么,它能解决哪些问题
dump-ui 是一个基于 ADB + UiAutomator 的页面结构抓取工具。核心能力只有一条:
一条命令,把当前页面所有元素的 DOM 结构、resource-id、content-desc、坐标边界、点击状态全部导出来。
prd-to-test 是配套的测试用例生成工具,读 dump 出来的 DOM 文件,自动生成 L1~L6 分层的 Python 测试用例。
两者配合,就变成了:
手动操作手机 → 一条命令 Dump DOM → 自动生成测试用例 → pytest 直接跑
这条链路能解决的问题,我列了一张完整的清单:
2.1 解决「不知道元素叫什么」的问题
以前:对着 Inspector 界面一个个猜 resource-id,猜错了就重来。 现在:Dump 文件里直接列出所有元素及其属性,照着抄。
2.2 解决「Weex/WebView 页面识别不到」的问题
这类页面用传统工具是黑盒——连上了设备,但里面所有按钮都看不到,Inspector 里全是空容器。
dump-ui 的优势是:它能告诉你哪个页面是这种情况。
Dump 结果里有一列”关键可交互元素数量”,如果这个数字是 0,就说明 UiAutomator 无法识别这个页面的内部元素。
这个信息本身就很有价值——你不用等用例跑挂了才发现这条路走不通。
2.3 解决「换 APP 就要重搭工具链」的问题
这套方案不依赖任何 APP 特定逻辑,任何 Android APP 都可以用:
-
只需要知道 APP 的
包名(package name) -
其他所有逻辑(找元素、生成用例)全部通用
2.4 解决「用例写得不全」的问题
手动写用例,容易漏的边界场景:购物车为空、快速切换 Tab、网络超时处理。
prd-to-test 自动生成 L1~L6 六层覆盖,从元素存在性到端到端流程全包含,不需要自己一条一条凑。
2.5 解决「回归效率低」的问题
手动回归:5 分钟/次。 自动化回归:134 秒/次(2 分 14 秒),全程无需手动干预。
三、环境准备:核心工具安装
整个链路只需要 5 个工具,没有其他依赖。
3.1 安装 Android 调试工具
# macOSbrewinstall --cask android-platform-tools# 验证安装adb --version
3.2 启动 Appium 服务
# 全局安装 appiumnpm install -g appium# 安装 UiAutomator2 驱动npx appium driver install uiautomator2# 启动服务(默认 http://127.0.0.1:4723)npx appium

3.3 安装 Python 依赖
# 确保使用 pyenv 环境pyenv global 3.11.8# 安装 appium 客户端pip install appium-python-client selenium pytest
3.4 华为/荣耀手机特殊配置
华为设备比普通 Android 设备多了安全限制,Appium 无法直接安装辅助 APK,需要手动处理:
Step 1:开启 USB 安装权限
设置 → 安全 → 更多安全设置 → 允许来自 USB 的安装Step 2:手动安装 Appium Settings APKadb install -r ~/.appium/node_modules/appium-uiautomator2-driver/node_modules/io.appium.settings/apks/settings_apk-debug.apkStep 3:手动安装 UiAutomator2 Server APKadb install -r ~/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk
四、实战演示:淘宝完整购物流程
我用淘宝 APP 演示一个完整的购物链路自动化:从首页搜索,到提交订单,共 5 个关键页面。
4.1 连接手机并验证
用数据线将华为手机连接到电脑,在手机上确认”允许 USB 调试”弹窗。
验证连接:
adb devices# 正常输出:# List of devices attached# 8E3NXXXXX device4.2 打开淘宝 APP 并 Dump 首页
在手机上打开淘宝 APP,停留在首页。
执行第一条 Dump 命令:
python3 ~/.workbuddy/skills/dump-ui/scripts/dump-page.py \com.taobao.taobao --name "首页"命令执行成功后,会在两个位置生成输出:
-
~/dump-ui-output/dom-dumps/page_首页.xml(DOM 结构文件)

-
~/dump-ui-output/screenshots/page_首页.png

4.3 Dump 搜索结果页
在手机上操作:点击搜索框 → 输入”始祖鸟” → 点击搜索按钮。
执行第二条 Dump:
python3 ~/.workbuddy/skills/dump-ui/scripts/dump-page.py \com.taobao.taobao --name "搜索结果"

4.4 Dump 商品详情页
在手机上操作:点击搜索结果中的第一个商品。
执行第三条 Dump:
python3 ~/.workbuddy/skills/dump-ui/scripts/dump-page.py \com.taobao.taobao --name "商品详情"

4.5 Dump 提交订单页(跳过购物车)
重要踩坑:购物车页面是 Weex 渲染,UiAutomator 识别不到里面的元素。
为了验证这个问题,我也 Dump 了购物车页面:
python3 ~/.workbuddy/skills/dump-ui/scripts/dump-page.py \com.taobao.taobao --name "购物车结算"
Dump 结果显示:

购物车页面关键元素 = 0,说明 UiAutomator 无法识别内部按钮。
所以实际路径改为:商品详情页 → 点击”立即购买” → 直接到提交订单页。
这是 dump-ui 带来的额外价值,提前排雷,而不是等用例跑挂了才发现。
4.6 Dump 最终提交订单页
在手机上操作:商品详情页点击”立即购买”按钮。
执行第四条 Dump:
python3 ~/.workbuddy/skills/dump-ui/scripts/dump-page.py \com.taobao.taobao --name "提交订单"

五、解读 DOM 文件:从结构到定位器
Dump 出来的 XML 文件包含每个页面的完整元素信息。以下是从 5 个页面中提取的关键元素:
5.1 首页关键元素
<!-- 搜索栏 --><android.view.Viewcontent-desc="搜索栏"clickable="true" /><!-- 搜索按钮 --><android.widget.FrameLayoutcontent-desc="搜索"clickable="true" /><!-- 底部 Tab:购物车 --><android.widget.FrameLayoutcontent-desc="购物车"selected="true" />
5.2 商品详情页关键元素
<!-- 商品图片 --><android.view.Viewcontent-desc="商品图片" /><!-- 加入购物车 --><android.widget.FrameLayoutcontent-desc="加入购物车"clickable="true" /><!-- 立即购买 --><android.widget.FrameLayoutcontent-desc="立即购买"clickable="true" /><!-- 商品价格 --><android.widget.TextViewtext="¥899.00" />
5.3 提交订单页关键元素
<!-- 店铺名称 --><android.view.Viewcontent-desc="ARCTERYX始祖鸟官方旗舰店" /><!-- 配送信息 --><android.view.Viewcontent-desc="48小时内发货" /><!-- 支付方式 --><android.view.Viewcontent-desc="中国银行信用卡" />六、生成测试用例:L1~L6 六层覆盖
拿到 DOM 文件后,用 prd-to-test 生成测试用例:
python3 ~/.workbuddy/skills/prd-to-test/scripts/generate-tests.py \
~/WorkBuddy/dump-ui-output/dom-dumps/page_商品详情.xml \--module shopping_flow \--platform android生成结果自动分层:
共 17 个可执行用例,不需要自己一条一条手写,用例展示如图:
七、端到端用例:完整代码展示
7.1 Driver 配置(新版 appium-python-client)
注意:旧版
from appium.options import UiAutomator2Options在新版里会报 ImportError,必须换成from appium.options.android import UiAutomator2Options。7.2 端到端用例代码(首页 → 提交订单)
7.3 执行命令
pytest tests/test_shopping_flow.py::TestEndToEnd -v执行结果,用例执行成功:
八、踩坑全记录
九、总结:这套工具链的核心价值
整个流程的核心命令就 3 条:
# 1. Dump 页面python3 ~/.workbuddy/skills/dump-ui/scripts/dump-page.py <包名> --name <页面名># 2. 生成用例python3 ~/.workbuddy/skills/prd-to-test/scripts/generate-tests.py <DOM文件> --module <模块名># 3. 执行测试pytest tests/<测试文件>.py -v如果你的项目有 Android APP 需要做回归测试,可以先用 dump-ui 抓一个页面试一下——抓完你就知道后面该怎么做了。
9.1 dump-ui 核心优势总结
零门槛获取页面元素 不需要连接 Inspector、不需要手动点控件猜 ID,一条命令把所有元素的 resource-id、content-desc、坐标边界全部导出。照着抄就行。
提前发现不可测区域 Dump 结果里”关键可交互元素数量”这列数字会直接告诉你——这个页面 UiAutomator 能不能识别。不需要等用例跑挂了才发现。
自动生成 L1~L6 测试用例 不用自己一条一条写,DOM 文件丢进去,六层覆盖的测试用例直接生成,从元素存在性到端到端流程全包含。
全程自动化,2 分钟完成手动回归要 5 分钟的事 pytest 一键执行,全程无人工干预。134 秒跑完淘宝购物流程,每次迭代都能跑,不心疼时间。
任何 Android APP 都能用 换 APP 不需要重搭工具链,只需要改一个包名。电商、银行、外卖、视频、企业内部系统,逻辑通用,积累的用例可以复用。
踩过的坑都帮你记录了 华为 APK 安装、Weex 页面识别、Appium 版本兼容性问题,这些问题我在实测时全部遇到了,解决方案直接写在文档里,你不用再踩一遍。
写在最后
其实做 APP 自动化这件事,思路不复杂,难的从来都是第一步怎么踩下去。
找元素这件事,卡住了太多人,不是大家不想做自动化,是还没开始就被 Inspector 劝退了。
dump-ui 能做的,就是把这一步变得简单到不能再简单:连上手机,手动操作到你想测的页面,一条命令,结果全出来。剩下的事,就顺理成章了。
你平时测 APP,最头疼的是哪一步? 评论区聊聊,说不定有共鸣。
如果身边有同事在为自动化头疼,欢迎转发给他看看,少踩一个坑是一坑。
如果你觉得有用,随手点个赞、在看、转发三连吧;
也可以给个星标⭐,方便下次翻出来对照提示词用。
宠粉行动:扫码加微信Anker2025,这套Skills我免费送你!!!
▲ 添加个人微信,拉你进高质量测试交流群 – END – 下一篇,更精彩,敬请期待~~ 👆👆tips:亲爱的读者朋友,由于微信的推送规则,即使你关注了我,可能也常常收不到推送,记得点击“AItest进阶之路名片,设为星标⭐️,文章会自动推送哦! 推荐阅读
一个测试人必备的Skills,从功能到性能全搞定,找到它我兴奋了一下午(附详细实操和获取方式)
测试人必会Skills:接口文档AI快速生成(附详细步骤,建议收藏)
夜雨聆风









