minicap属于STF框架的一个工具,能够高速截图、同步手机屏幕至浏览器等
为何用minicap截图:
通过试验,截同一个屏幕的一张图,adb shell screencap速度为2.9秒,而minicap为0.8秒,效率高不少,这在基于图像识别的自动化测试中,起到相当重要的做用
minicap的使用
一、要给手机安装minicap,须要先传两个文件到手机,分别是minicap可执行文件,和minicap.so动态连接库
但这两个文件对于不一样手机不是通用的,他是根据手机CPU架构(arm64-v8a、armeabi-v7a,x86,x86_64)和sdk版原本的
获取CPU架构
adb shell getprop ro.product.cpu.abi


获取sdk版本(安卓)
adb sehll getprop ro.build.version.sdk


根据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)


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


二、找到文件,上传至手机指定的目录
adb push minicap /data/local/tmp adb push minicap.so /data/local/tmp
三、更改权限
adb shell chmod 777 /data/local/tmp/minicap adb shell chmod 777 /data/local/tmp/minicap.so
这个时候,准备工做都已经完成了,如今我要作两件事
一、截图
先获取手机分辨率
adb shell wm size


而后执行命令
adb shell \ LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 720x1520@720x1520/0 -s > /sdcard/deal_with_pic/1.png


这个时候,手机就有一张截图在指定的目录下了
二、同步手机屏幕至浏览器
一样的,先获取手机分辨率,而后执行命令
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 720x1520@720x1520/0


这时候,就启动了一个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


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


这个跟airtest中的手机屏幕同步是同样的,响应很快
搞了半天,这玩意儿能作什么?这就是minicap的母项目stf要作的(https://openstf.io/),能够本身作一个云测平台