zoukankan      html  css  js  c++  java
  • 【收藏】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

    测试报告

     
  • 相关阅读:
    mac 下安装jenkins
    Appium元素定位难点:tap坐标定位不准确
    Appium元素定位难点:混合式的native+webview
    Linux 上安装 appium
    springMVC之AOP
    设计模式之装饰模式
    设计模式之桥接模式
    MyBatis特殊字符转义
    python+urllib+beautifulSoup实现一个简单的爬虫
    设计模式之代理模式
  • 原文地址:https://www.cnblogs.com/Ronaldo-HD/p/9915370.html
Copyright © 2011-2022 走看看