【minicap】基於圖像識別的手機端UI自動化測試的截圖方式更新


minicap屬於STF框架的一個工具,可以高速截圖、同步手機屏幕至瀏覽器等
 
為什么用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
 
獲取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)
 
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
 
然后執行命令
adb shell \
LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 720x1520@720x1520/0 -s > /sdcard/deal_with_pic/1.png
這個時候,手機就有一張截圖在指定的目錄下了
 
2、同步手機屏幕至瀏覽器
同樣的,先獲取手機分辨率,然后執行命令
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/),可以自己做一個雲測平台
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM