昨儿个有粉丝私信问Poco魅客用哪个版本干脆我自己也捋一遍。
需求摆在眼前
新项目要用Poco做自动化测试,一看GitHub傻眼了,光名字就有poco、pocoui、Airtest-poco、poco-sdk四个!翻了半天文档越看越晕,得,我自己下下来挨个试。
先把环境折腾
- Python 3.8装稳
- pip挨个敲命令:pip install pocoui,pip install airtest
- GitHub把poco主仓库的源码也拽下来了
安装倒是顺利,坑都在后面。
第一脚就踩坑
先试GitHub下载的纯源码版poco,跑了个demo脚本直接报错:
- 提示缺pywebio模块,pip补上
- 接着报faker缺失,继续补
- 十分钟后还在报错…文档只字未提依赖项!果断放弃
转向Pocoui
换上刚装的pocoui包,启动设备连接:
- 安卓手机打开USB调试
- 命令行跑pocoshell
连是连上了,定位按钮死活点不动:
- 明明IDE显示元素ID叫"*_login"
- 实际点下去报UiObjectNotFoundError
- 换dumpsys一查发现真实ID带火星文后缀!UI库根本没过滤这些字符
Airtest全家桶体验
想起装了Airtest,自带集成版poco:
- 启动IDE连手机自动识别
- 录制功能真香!点几个按钮自动生成脚本
- 录制的定位语句全是绝对路径,比如:/FrameLayout/TextView[3]
用了一天出事了:
- 版本更新加了个广告弹窗
- 原来TextView[3]变成TextView[4]
- 整套脚本直接瘫痪!还得改定位策略
吐血总结
三天折腾完,结论很粗暴:
- 别碰纯源码版,依赖能让人发疯
- Pocoui文档太糙,定位机制有硬伤
- Airtest-poco最适合新手,尤其录屏功能救命了
但要用长久:
- 定位必须加anchor定位法(比如靠text属性锚定)
- 绝对路径的代码全得重构
- 遇到火星文控件就手写正则匹配
现在项目用的Airtest集成版,搭配自己写的定位封装脚本,三个月没出大幺蛾子。粉丝再问我就甩这句:别瞎折腾,装Airtest完事儿!
