【minicap】基于图像识别的手机端UI自动化测试的截图方式更新

为什么用minicap截图:

经过试验,截同一个屏幕的一张图,adb shell screencap速度为2.9秒,而minicap为0.8秒,效率高很多,这在基于图像识别的自动化测试中,起到至关重要的作用

minicap的使用

1、要给手机安装minicap,需要先传两个文件到手机,分别是minicap可执行文件,和minicap.so动态链接库

但这两个文件对于不同手机不是通用的,他是根据手机CPU架构(arm64-v8a、armeabi-v7a,x86,x86_64)和sdk版本来的

获取CPU架构

adb shell getprop ro.product.cpu.abi

img

获取sdk版本(安卓)

adb shell getprop ro.build.version.sdk

img

根据CPU架构和SDK版本,分别获取minicap和minicap.so(要获取对应的文件需要自己编译,太麻烦,airtest项目给我们提供了方便,直接获取就行,前提是下载了airtest项目的源码,或者import airtest)

就如我获取到我的手机CPU架构为arm64-v8a,sdk版本为27,则到airtest项目下根据arm64-v84找到minicap可执行文件(airtest\core\android\static\stf_libs/arm64-v8a/minicap)

img

(airtest\core\android\static\stf_libs\minicap-shared\aosp\libs\android-27\arm64-v8a\minicap.so)

img

2、找到文件,上传至手机指定的目录

adb push minicap /data/local/tmp
adb push minicap.so /data/local/tmp

3、更改权限

adb shell chmod 777 /data/local/tmp/minicap
adb shell chmod 777 /data/local/tmp/minicap.so

这个时候,准备工作都已经完成了,现在我要做两件事

1、截图

先获取手机分辨率

adb shell wm size

img

然后执行命令

adb shell \
LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 720x1520@720x1520/0 -s > /sdcard/deal_with_pic/1.png

img

这个时候,手机就有一张截图在指定的目录下了

2、同步手机屏幕至浏览器

同样的,先获取手机分辨率,然后执行命令

adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 720x1520@720x1520/0

img

这时候,就启动了一个server

打开另一个命令行窗口,端口映射:将服务端的端口映射到1717

adb forward tcp:1717 localabstract:minicap

然后,运行minicap项目下的example目录下的app.js(需要安装node.js,minicap项目到github上clone https://github.com/openstf/minicap

node app.js

img

最后,打开浏览器,输入localhost:9002,就把手机屏幕同步到浏览器了

这个跟airtest中的手机屏幕同步是一样的,响应很快

赞 (2)