在我們做 App 自動化測試的時候,會發現很多場景下的元素沒有 id、content-desc、text 等屬性,並且有可能會碰到由於開發採用的是自定義 View,View 中的元素也無法識別到,很多的自動化測試框架對此類場景束手無策。
在 Appium 中用到的圖像識別庫是 OpenCV,因為在 Appium V1.9.0 中-image查找元素方式才被引入進來,所以需要保證你有安裝 V1.9.0 或以上版本的 Appium。
這裡需要注意,Appium 圖像識別的使用只能適用於通過 npm 安裝 Appium 的方式,通過 Appium-desktop 安裝 Appium 的方式是不適用的。Step1:通過 npm 安裝 Appium1. 下載對應系統和位數的node.js安裝包https://nodejs.org/en/download/3. 進入cmd,輸入node-v以及npm-v檢測(npm是node.js自帶的包管理器)4. 指定npm安裝的全局模塊和緩存的路徑,如果不指定默認會安裝到C盤中【C:\Users\用戶名 AppData\Roaming\npm】■ 在 nodejs 目錄下新建【node_cache】和【node_global】目錄
■ 輸入如下命令指定:
5. 配置 node.js 環境變量
■ 在系統變量中新建【NODE_PATH】變量名,變量值為【D:\software\nodejs\node_global\node_modules】
【%NODE_PATH%】
■ 將用戶變量【Path】中原來的【C:\Users\用戶名\AppData\Roaming\npm】修改為【D:\software\nodejs\node_global】/安裝 Appium
2. npm 通過全局的方式安裝 Appium(默認下載安裝最新版本 Appium)
Step2:安裝opencv4nodejs所需要的依賴1. 進入到 https://cmake.org/download/下載對應軟體包,解壓到任意目錄追加【D:\software\cmake-3.18.1-win64-x64\bin】,其中 cmake-3.18.1-win64-x64 是為 Cmake 解壓之後的目錄名
/安裝 building tools
Step3:Appium 中安裝圖像識別模塊 opencv4nodejs由於網絡和各種環境問題的影響,通過官方推薦的【npm i -g opencv4nodejs】命令直接安裝 opencv4nodejs 模塊的話,會發現存在很多的問題。
https://www.npmjs.com/package/opencv4nodejs#how-to-install裡面的說明,這裡使用的是手動安裝 OpenCV 的方式
1. 在系統環境變量中添加:【OPENCV4NODEJS_DISABLE_AUTOBUILD】變量名,變量值為【1】
2. 安裝choco(windows上面的軟體管理方案,可以解決部署軟體複雜、容易出錯問題)官網安裝:https://chocolatey.org/install,打不開的同學給大家搬運過來:
■ 使用管理員運行 powershell,檢查執行策略:執行指令【Get-ExecutionPolicy】
■ 如果結果為Restricted,那麼執行指令【Set-ExecutionPolicy AllSigned】或者【Set-ExecutionPolicy Bypass-Scope Process】,直到結果為【RemoteSigned】完畢後 choco 默認安裝在 C:\tools 目錄中。
5. 安裝opencv4nodejs進入cmd,執行命令命令執行過程中,會對之前通過 choco 方式下載好的包進入編譯,編譯過程中可能會出現卡住,關掉 cmd 窗口重新再執行命令即可。
Step1:截取所需進行圖像識別的元素1. 將需要進行圖像識別元素所在頁面截屏
2. 通過 adb pull 命令拉取截屏圖片出來
3. 用畫圖工具打開--劃重點,一定要保證圖片是原大小的,不能放大或者縮小圖片4. 截取其中的元素保存為圖片
Step2:代碼實現
這裡我們需要先將圖片轉換為 Base64 編碼格式,轉換代碼如下:
測試代碼如下:
Step3:執行1. 開啟Appium Server,通過appium-a127.0.0.1-p4723命令啟動
2. 啟動設備,通過adb devices檢測設備
3. 執行case
效果如下:
Appium 圖像識別的準確率是跟 Appium 的截圖功能以及我們所提供的元素截圖相關的,有時候我們會發現更換一臺不同解析度的手機之後腳本就會執行失敗。Appium 提供了一些設置可以提高圖像識別的準確率或加快圖像識別的速度。
使用示例:
說明:本文為檸檬班歪歪老師原創,轉載需註明出處
可加多多老師微信
13327216354
或者掃描下方二維碼