Skip to content

基于Appium的 App UI 遍历 & Monkey工具 (支持操作步骤回放)

Notifications You must be signed in to change notification settings

Archer456/UICrawler

This branch is 68 commits behind lgxqf/UICrawler:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

72bbe74 · Feb 26, 2019
Feb 22, 2019
Feb 22, 2019
Sep 5, 2018
Feb 24, 2019
Feb 26, 2019
Aug 17, 2018
Feb 21, 2019
May 21, 2018
Aug 6, 2018

Repository files navigation

UICrawler

基于Appium 1.8.1开发的App UI遍历 & Monkey 工具

QQ 技术交流群 : 728183683

作者提供有偿UI自动化培训、UI测试工具开发及Jenkins集成,有意者请联系群主

环境搭建及基本使用说明: https://testerhome.com/topics/14490 (感谢网友harsayer 倾力之作)

v2.26版已支持 Appium 1.10.1

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)
  • 支持滑动动作
  • 支持根据关键字、包名、Acitity的名字、控件类型触发Back key(Android)
  • 支持自动登录时的自定义操作:点击、拖拽、文本输入。 详见Config.yml中LOGIN_ELEMENTS部分内容
  • 黑名单支持XPath

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.待开发功能

  • 报告中增加每个activity中click失败和成功的次数统计
  • 划动半屏,划动一屏
  • 优化执行速度,如截图生成,点击等

运行工具

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 运行微信小程序测试,将RUN_IN_WECHAT_MINI_PROGRAM_MODE设为true 启动后会通过微信进入小程序

CRITICAL_ELEMENT:
  MINI_PROGRAM_NAME: 此处值为待测的小程序的名字
  RUN_IN_WECHAT_MINI_PROGRAM_MODE: true

查看支持的参数

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 查看app包名 和 Main activity
  Linux/Mac
    ./aapt dump badging "apk"  | grep launchable-activity
  Windows
    aapt dump badging "apk"  | findstr launchable-activity
    
  aapt 通常在android sdk的 build-tools目录下, "apk"是apk文件路径

Android查看当前activity
    adb shell dumpsys activity | grep "mFoc"

配置文件主要可配置项

  • 截图数量控制
  • 黑名单、白名单
  • 限制遍历深度、次数、时间
  • 遍历界面元素的xpath
  • 自动登录的用户名和密码及相应的UI元素ID
  • 待输入文本列表及待输入的控件类型
  • Monkey触发事件类型及比率

测试报告

注意事项

  • iOS设备一定要打开"开发者选项"里的“Enable UI Automation” https://www.jianshu.com/p/a1d075b3472c
  • iOS测试包必须是debug版的
  • 同时运行多台ios设备时要每台设备要设置不同的IOS_WDA_PORT : 8001-8888
  • Android7及以上的手机必须安装Uiautomator2 server 的两个apk(安装deskstop版appium,初次连接appium会自动安装), 也可进入到apk目录下通过adb安装

依赖的工具

Known issue

  • iOS不支持WKWebview元素获取 appium/appium#9408
  • Android中bounds=[device width, device height]时xpath不能定位到元素.(appium bug)

关于如何发挥测试工具的价值

  • 用不同的账号运行测试,因为每个账号可能看到的内容不一样
  • 用不同的手机系统版本运行测试,尽可能做到iOS 9-11, Android 4-8 都覆盖到,如果资源有限无法同时运行多台设备,每天可以选择一两个系统版的手机去运行测试
  • 用不同的手机运行测试,尤其安卓碎片化严重,手机厂商多,有的问题只有特定手机才能发现
  • 关于测试运行的频度,只要有代码改动建议至少一天一次,下班时运行,第二天看结果

参考内容

一些技术文档

About

基于Appium的 App UI 遍历 & Monkey工具 (支持操作步骤回放)

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 96.8%
  • Shell 3.2%