【收藏】UICrawler


基於 Appium 的 App UI 遍歷 & Monkey 工具 (支持操作步驟回放)

UICrawler

https://github.com/lgxqf/UICrawler

基於Appium 1.8.1開發的 App UI遍歷 & Monkey 工具(Java版 )

 

 

 

QQ 技術交流群 : 728183683

環境搭建及基本使用說明: https://testerhome.com/topics/14490 (感謝網友harsayer 傾力之作)

2.0 版 功能描述

1.UI遍歷及以下功能 Android/iOS

  • 基於深度優先的原則,點擊UI上的元素。當發現Crash時會提供操作步驟截圖及相應的Log. * Android提供logcat的log. iOS提供系統log及crash相應的ips文件
  • 元素遍歷結束或按下Ctrl + C鍵會生成HTML測試報告。測試報告中匯集了測試統計、log及截圖的相應信息
  • 同一個元素只會點擊一次(白名單中的元素可能會被多次點擊)
  • 支持對輸入框的文本輸入(需在文件中進行配置 INPUT_TEXT_LIST)
  • 統計每個Activity點擊數量(Android)
  • 支持滑動動作
  • 支持根據關鍵字和控件類型觸發Back key(Android)

2.Monkey功能及以下事件 Android/iOS

  • 隨機位置點擊
  • 通過黑名單控制不想點擊的區域
  • 特殊位置點擊(需在文件中進行配置)
  • 特殊位置長按10秒(需在文件中進行配置)
  • 任意方向及長度的滑動
  • 觸發Home鍵(Android Only)
  • 觸發Back鍵(Android Only)
  • 重啟app
  • 及以下手勢操作(位置隨機) * 雙擊 雙指放大 雙指縮小 拖拽

3.微信小程序

  • 微信小程序 Monkey (iOS & Android)
  • 微信小程序 UI遍歷 (Android only)

4.其它功能

  • 運行時間限制
  • 每次點擊都會生一個一截圖,截圖中被點擊的位置會用紅點標注,方便查找點擊位置
  • 當檢查到Crash時,為每個Crash提供單獨的操作步驟截圖和mp4格式的視頻文件
  • 生成整體操作步驟視頻,方便重現發現的問題
  • 性能數據采集,執行時添加-e參數
  • Android : 每秒采集一次CPU和Memory數據 生成perf_data.txt並寫放到influxDB(需單添加-x參數,且influxDB要單獨安裝)
  • iOS: 要求以appium --session-override --relaxed-security 啟動appium, 之后會生成XCode instrument能直接讀取的性能數據 詳見 https://appiumpro.com/editions/12

5.待開發功能

  • 將性能數據通過grafana顯示
  • 支持遍歷順序控制
  • 根據執行步驟重現bug
  • 划動半屏 划動一屏
  • 黑名單支持XPath

運行工具

1.下載Jar包

UICrawler.jar

2.下載配置文件

config.yml

3.根據待測試App修改配置文件中下列各項的值 詳情見 Config.md

Android

  • ANDROID_PACKAGE
  • ANDROID_MAIN_ACTIVITY iOS
  • IOS_BUNDLE_ID
  • IOS_BUNDLE_NAME
  • IOS_IPA_NAME Monkey配置項可選, 詳情見 Monkey配置

4.啟動appium

appium --session-override -p 4723
-p 設定appium server的端口 , 不加參數默認為4723

5.1 運行元素遍歷(必須有yml配置文件)

java -jar UICrawler.jar -f config.yml -u udid -t 4723
-u 指定設備udid
-t 指定appium server的端口(此項為可選項,默認值是4723)

5.2 運行 Monkey功能

java -jar UICrawler.jar -f config.yml -u udid -t 4723 -m

5.3 運行微信小程序測試,需修改 MINI_PROGRAM_NAME的值,並按照下面的值設置 CRITICAL_ELEMENT中相應的值,才會啟動微信進入小程序

#小程序
MINI_PROGRAM:
MINI_PROGRAM_NAME: 此處值為待測的小程序的名字
MINI_PROGRAM_PROCESS: com.tencent.mm:appbrand1

CRITICAL_ELEMENT:
#Android 微信
ANDROID_PACKAGE: com.tencent.mm
ANDROID_MAIN_ACTIVITY: com.tencent.mm.ui.LauncherUI

#iOS 微信
IOS_BUNDLE_ID: com.tencent.xin
IOS_BUNDLE_NAME: 微信
IOS_IPA_NAME: wechat

查看支持的參數

java -jar UICrawler.jar -h

-a Android package's main activity
-b iOS bundle id
-c Maximum click count
-d Maximum crawler UI depth
-e Record performance data
-f Yaml config file
-h Print this usage information
-i Ignore crash
-l Execution loop count
-m Run monkey
-p Android package name
-r Crawler running time
-t Appium port
-u Device serial
-v Version
-w WDA port for ios
-x Write data to influxDB

一些常用命令

查看設備udid
Android:
adb devices
iOS:
instruments -s devices
idevice_id -l

Android 查看apk Main activity
./aapt dump badging "apk" | grep launchable-activity
aapt 通常在android sdkbuild-tools目錄下
windows中將grep換成findstr
"apk"apk文件路徑

配置文件主要可配置項

  • 截圖數量控制
  • 黑名單、白名單
  • 限制遍歷深度、次數、時間
  • 遍歷界面元素的xpath
  • 自動登錄的用戶名和密碼及相應的UI元素ID
  • 待輸入文本列表及待輸入的控件類型
  • Monkey觸發事件類型及比率

注意事項

  • iOS設備一定要打開"開發者選項"里的“Enable UI Automation” https://www.jianshu.com/p/a1d075b3472c
  • iOS測試包必須是debug版的
  • 同時運行多台ios設備時要每台設備要設置不同的IOS_WDA_PORT : 8001-8888

測試報告

 

 

 


免責聲明!

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



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