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

Justin · 2018年05月06日 · 最后由 TesterWa 回复于 2023年01月29日 · 7692 次阅读
本帖已被设为精华帖!

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 sdk的 build-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

测试报告

共收到 140 条回复 时间 点赞
  • 支持这个工具
  • 对这些不是太了解,工具是否有可以定制预期结果?还是遍历后不 crash,就认为达到测试目的了?
  • ps: 顺便吐槽下,leader 说不做检查点的自动化没意义,只能呵呵, 真是头发不长,见识也不长.
Justin 回复

楼主,有个问题,我这边跑 App,试了很多次,没有一次能完整的跑完遍历...

谢谢支持 下个月估计差不多能开源 还有一些 bug 没改完 功能上还需要完善一下 然后就可以开源了

chen 回复

这个问题我稍后解决一下 xml 解析用的库的 win 上运行有问题 mac 上 OK 的

Justin 回复

懂了;靴靴;

我们公司有个同事给我推了这个工具,这个工具是 github 上开源的吗?

abelsheng 回复

目前还在测试阶段 还没开源 以后会开源

支持,老早之前看到@quqing也写了一个 java 版本的,后来自己集合这 2 者也做了一个广度优先的版本

Justin #11 · 2018年05月07日 Author
Unmurphy 回复

有链接吗 发来看看 我也学习学习

Justin #13 · 2018年05月07日 Author
wangchen_neuq 回复

BTW, 那些头发不长 见识不长 又不听别人意见的管理者 确实挺烦人的。。。

Justin #16 · 2018年05月09日 Author

appcrawler 的不太清楚 你可以参考 iosmoney 里面也有截图时加红点

forEach+random 搞定这个问题

Justin #18 · 2018年05月09日 Author

等过一阵放出了源码 你可以研究一下 就是调用 java 的下些库函数 在图片上画圆

学习了一下 appcrawler,奈何源码是 Scala 的,看起来比较吃力,非常期待您的 java 版 UIcrawler 源码,BTW,后续要是也能支持自己写插件就更好了,楼主加油!

期待楼主完善,之后可以申请加精

在三星 s7 edge 上测试了一下,发现进入一个页面以后,要等待很长时间才会有下一步操作。

Justin #23 · 2018年05月10日 Author
knowway 回复

你的 S7 是 android 7 吗? 装 uiautomator2 server apk 了吗

Justin #24 · 2018年05月10日 Author

Good to know about that :)

Justin #25 · 2018年05月10日 Author
木头 回复

还在测试阶段 有些小 bug 还在加一些功能 6 月中旬前估计能开源

Justin #26 · 2018年05月10日 Author
木头 回复

插件目前还没考虑 不过以后可能会考虑加插件 谢谢你的建议

我 15 岁就出来打工,从以前的一无所有到现在的身无分文,我就是我,看到自己都上火。其实也不要为了眼前的境地而悲伤,也许明天更绝望了。

ITEM_WHITE_LIST
是表示有这些按钮的时候优先点它们吗?

大佬大佬,学习了

执行报错,Android6.0,华为荣耀 7
为啥要往/system/bin/sh 上面写结果呢?
lz 帮忙看看有啥解决办法?

$ java -jar UICrawler.jar -f config.yml -u MYV0215818005565 -t 4723
14:47:33.227 [main] INFO  Crawler - /Users/waterhuang/Downloads/UICrawler/config.yml
14:47:33.231 [main] INFO  util.ConfigUtil - Reading config file /Users/waterhuang/Downloads/UICrawler/config.yml
14:47:33.344 [main] INFO  util.ConfigUtil - Config : PORT = 4723
14:47:33.344 [main] INFO  util.ConfigUtil - Config : MAX_CLICK_COUNT = 100000
14:47:33.347 [main] INFO  util.ConfigUtil - Config : ANDROID_PACKAGE = xxx.xx
14:47:33.347 [main] INFO  util.ConfigUtil - Config : ANDROID_MAIN_ACTIVITY = .xxx.xxxxxx
14:47:33.368 [main] INFO  util.Driver - ===== Method : prepareForAppiumAndroid   
14:47:33.524 [main] INFO  util.Util - adb -s MYV0215818005565 shell getprop | grep version.sdk  ---output is : /system/bin/sh: grep: can't execute: Permission denied
getprop: write: Broken pipe
14:47:33.525 [main] INFO  util.Driver - sdk version : re
Exception in thread "main" java.lang.NumberFormatException: For input string: "re"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.valueOf(Integer.java:766)
    at util.Driver.getSDKVersion(Driver.java:912)
    at util.Driver.prepareForAppiumAndroid(Driver.java:823)
    at Crawler.main(Crawler.java:98)
14:47:33.559 [Thread-1] INFO  Crawler - 0 elements are clicked
14:47:33.559 [Thread-1] INFO  Crawler - ==============list end==========
14:47:33.560 [Thread-1] INFO  util.XPathUtil - Method: getClickCount
14:47:33.570 [Thread-1] INFO  util.Util - Write to file report.html
14:47:33.571 [Thread-1] INFO  Crawler - 

------------------------------Test report :/Users/waterhuang/Downloads/UICrawler/MYV0215818005565-2018-05-11-14_47_33/report.html
Justin #31 · 2018年05月11日 Author
water 回复

adb -s MYV0215818005565 shell getprop | grep version.sdk 这个是 linux 上运行的命令 你的电脑是 windows?

Justin #124 · 2018年05月11日 Author
water 回复

白名单的意义是 所有包含白名单文本的控件 有会被点击多次 (元素遍历会限制同一个元素只点击一次,白名单中的元素无些限制)

Justin #33 · 2018年05月11日 Author
Justin 回复

这个命令你直接运行 报错吗?

Justin #52 · 2018年05月14日 Author

好 我发你 qq 邮箱

Justin 回复

真的不行啊…………

Justin 回复

我的是 mac

Justin 回复

单独运行这个命令是没问题的哦!可以成功返回:

adb -s MYV0215818005565 shell getprop | grep version.sdk
[ro.build.version.sdk]: [23]

帮忙解决一下撒~~否则你的工具在 mac 上用不了哎
mac 上面没有 /system/bin 目录哦!

Justin #36 · 2018年05月14日 Author
water 回复

我就是在 mac 上开发的 也是在 mac 上测试的 没有这个问题啊 你用 env 查查 SHELL bash 的目录是什么?

Justin 回复

SHELL=/bin/bash

Justin 回复

请看下面的例子,进入 adb shell 之后,再执行 grep 就会报错,android 里面没有 grep 命令,报错跟我现在的情况一样的。而直接 adb -s MYV0215818005565 shell getprop | grep version.sdk 是不会报错,因为 Mac 上有 grep。
请帮忙解决一下呗!考虑一下 adb shell 里面不支持 grep 的手机的情况。

99-6-88-54:UICrawler waterhuang$ adb -s MYV0215818005565 shell getprop | grep version.sdk
[ro.build.version.sdk]: [23]
99-6-88-54:UICrawler waterhuang$ adb shell
shell@HWPLK:/ $ getprop | grep version.sdk
/system/bin/sh: grep: can't execute: Permission denied
getprop: write: Broken pipe
Justin #40 · 2018年05月14日 Author
water 回复

这个命令是在 mac 上运行的 不是在 adb shell 后运行的 | 是管道符 你可以查查相关资料

Justin #41 · 2018年05月14日 Author
water 回复

你是 Java9 吗? 我用的是 Java8

Justin #56 · 2018年05月14日 Author

我加你 qq 你是谁? 哈哈哈

仅楼主可见
Justin 回复
java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Justin #43 · 2018年05月14日 Author
water 回复

OK, 我再改改代码 一会改完了告诉你 你试一下 看行不行

Justin 回复

但是实际结果就是在 adb shell 后台运行了 grep 结果报错。你这边能处理一下吗?例如先获取出来之后用 java 来截取版本。

Justin 回复

好的,多谢啦!早点开源出来我可以帮忙一起改

Justin 回复

这个版本也太大了……要下一个多小时

Justin #107 · 2018年05月14日 Author

恩 因为加入了测试回放的功能 引入了一些包 所以比较大。。。

Justin 回复

能发到我邮箱吗?实在受不了十几 k 的下载速度了 312743168@qq.com

Justin 回复

或者 qq 发我?

Justin 回复
java -jar UICrawler.jar -f config.yml -u MYV0215818005565 -t 4723
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:314)
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:268)
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:316)
    at java.util.jar.JarVerifier.update(JarVerifier.java:228)
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:383)
    at java.util.jar.JarFile.getInputStream(JarFile.java:450)
    at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:977)
    at sun.misc.Resource.cachedInputStream(Resource.java:77)
    at sun.misc.Resource.getByteBuffer(Resource.java:160)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:454)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

运行直接报这个错

Justin #54 · 2018年05月14日 Author
water 回复

这是什么鬼 :( , 莫非我打包有问题? 我试试啊

Justin 回复

我百度的结果就是打包的时候有问题

1.第一种解决:导入jcommander-1.48.jar包后运行.

下载路径为:http://download.csdn.net/detail/u010340178/9782044

2.创建项目的时候,选择JRE时要选择第二个,选择第一个就会报这样的错误。
Justin #58 · 2018年05月14日 Author

OK 我 qq 发你我的微信 我不怎么用 qq

Justin #59 · 2018年05月15日 Author

最新版 Jar 包和配置文件已上传至 https://pan.baidu.com/s/1mNci6SWNHPuLj_mvrfgIbg#list/path=%2F

仅楼主可见

感觉整个流程操作动作,比较慢,能不能优化一下操作速度~

同一个公司的。。。我在线这边的

Justin #63 · 2018年05月29日 Author

UI 遍历时确实是慢,因为要界面分析,要截图还要保证 所有截图都能正确生成。 Monkey 的功能已经优化,比原来快了。 你可以下新版试试

Justin 回复

感谢~

Justin #87 · 2018年05月29日 Author
fdeferf 回复

你是在人大附近的 ZD 吗? 我在集团总部 哈

楼主,我使用的是 appium-desktop 的,启动后执行你那个命令时报错,我看了下报的是"JAVA_HOME is no set currently,please set JAVA_HOME",但是我 java_home 是没有问题的,求解答!!

Justin #68 · 2018年05月29日 Author

你这是环境的问题啊 npm install -g appium-doctor 然后运行 appium-doctor 看看报什么错

仅楼主可见
Justin #73 · 2018年05月30日 Author
Smile 回复

你的是什么 app 啊? 我下载来试试

仅楼主可见

下载太慢了,无论是网盘下还是迅雷,都是 20kb/s....

Justin #76 · 2018年05月30日 Author
Smile 回复

android 的是吧?

Justin #79 · 2018年05月30日 Author
黑山老妖 回复

百度网盘就这龟速。。。 你有什么好建议吗

Justin 回复

对对对~

Justin #79 · 2018年05月30日 Author
Smile 回复

等我有空试试 看看是什么效果 然后回复你

Justin 回复

直接放 git 上?

Justin #81 · 2018年05月30日 Author
Smile 回复

ANDROID_BOTTOM_TAB_BAR_ID: com.huxiu:id/footer_bar

ANDROID_CLICK_XPATH_HEADER: 'string-length(@text)<30'

两个值是这么设的吗?按这个设一下试试

qiu
求解这是什么原因

Justin #83 · 2018年05月30日 Author
301000232 回复

你的命令错了 删掉 udid : java -jar UICrawler.jar -f config.yml -u 设备 udid -t 4723

Justin 回复

确实是我命令弄错了,但是报一样的错诶

Justin 回复

看了下配置,都设置过了~😖

Justin 回复

好哒好哒~

Justin 回复

楼主,如果在跑的过程中,手动操作了了 App,是不是就打乱了它的遍历步骤,还能继续往下走么?

Justin #88 · 2018年05月30日 Author
Justin 回复

这个错的意思是 udid 有误 找不到设备 你看看是 udid 设的值不对

Justin #89 · 2018年05月30日 Author
Smile 回复

会啊 你试试就知道了 但遍历的可能会不完整

总是进入到入口 activity 后就退回到桌面,然后就一直不动

Justin #63 · 2018年05月31日 Author
301000232 回复

你有 mac 吗 在 mac 上试试 我是在 mac 上开发的 windows 上还没试呢

仅楼主可见

已发~

Justin 回复



楼主,今天一直遇到这个问题,然后还是没有遍历完整过...

这是什么问题 APP 已经启动成功了,为什么说 APP 包无效?然后一直在重复启动 APP。手机系统是:5.0.2
楼主求解

Justin #98 · 2018年05月31日 Author
Smile 回复

这个问题我正在解决 下周出新版

Justin #101 · 2018年05月31日 Author
Smile 回复

收到

Justin #102 · 2018年05月31日 Author

QQ 技术交流群 : 728183683

Justin #53 · 2018年05月31日 Author
chen 回复

你的配置文件发我一下 LGXQF@163.COM 注明是哪个 app

https://github.com/lgxqf/UICrawler/blob/master/doc/Config.md

NODE_NAME_EXCLUDE_LIST:
STRUCTURE_NODE_NAME_EXCLUDE_LIST:

@lgxqf 这两个没注释

Justin 回复

楼主今天调 iOS 跑的时候,出现下面的报错~

Justin #106 · 2018年06月01日 Author
Smile 回复

你需要先修改配置文件里的 bundle id 请先查看 github 上 关于配置文件的说明文档

Justin #107 · 2018年06月01日 Author
老马 回复

这个我现在还解释不清 呵呵 以后再加上

Justin 回复

楼主,我配了 iOS 的参数,下面是报错。。。

Justin #109 · 2018年06月02日 Author

ios developer 选项里的 enable UI autoamtion 功能打开了吗

Justin 回复

打开了~

Smile 回复

你的 WDA 没配好吧~~

我这里 ios 也跟 109 楼报一样的错

我的 Android 已运行启动 APP 的登录页面,就报错了

老马 自动遍历工具 UICrawler 使用记录 中提及了此贴 06月05日 16:11
Justin #115 · 2018年06月05日 Author
chen 回复

该问题已解决 请下载最新的 jar 和 config.yml

@lgxqf 有开源计划么

Justin #119 · 2018年06月05日 Author

初步计划是等工具稳定一些后 6 月底开源 目前还有好多细节需要完善

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 3
at java.lang.String.substring(String.java:1963)
at util.Driver.getSDKVersion(Driver.java:939)
at util.Driver.prepareForAppiumAndroid(Driver.java:849)
at Crawler.main(Crawler.java:115)
哪位大神指导这个怎么解决?

Justin #121 · 2018年06月05日 Author
王多余 回复

这个明显是你的设备 udid 传的不对 有问题在群里说吧

Justin 回复

完美~ 已加入=

Justin #124 · 2018年06月19日 Author
Leo 回复

支持

Justin #126 · 2018年06月25日 Author

用 HTML 编辑器打开 report.html 找到 UTF-8 改编码格式. 这个问题我记得已经解决了 你下载的什么时候的版本 是最新版吗

用谷歌打开测试报告乱码是为什么呢,设置了谷歌的编码格式
这几种编码格式都试过,还是乱码,请问这是为什么,生成的测试报告在哪里可以修改编码格式呢

楼主,这些以源码已经开源了吗



楼主能帮看看这是什么错误吗

Justin #129 · 2018年07月02日 Author
yajunzheng 回复

你的 appium 要么设置有问题 要么就是版本太低了 用 1.8.1 试试

Justin 回复

谢谢楼主的回复,现在已经可以运行了,请问楼主可以发我源码研究研究吗

Justin #131 · 2018年07月02日 Author
yajunzheng 回复

目前还没开源 开源了就能看到了

仅楼主可见
Justin #23 · 2018年07月05日 Author
AItestwork 回复

没有微信群 只有 qq 群~

仅楼主可见
Justin #135 · 2018年07月05日 Author
Justin 回复

728183683 QQ 群里聊吧 平时工作忙 没太多时间聊微信

Justin #136 · 2018年08月03日 Author

Doc is updated to latest version, feel free to let me know if you any suggestion about this tool :)

Justin #137 · 2018年08月07日 Author

这个工具的 Monkey 功能有人用过吗?现在需要一些反馈,看看如何增强对 Monkey 功能的支持

Justin #139 · 2018年08月17日 Author

@seveniruby 怎么才能申请加精?

Justin 回复

当时没加精的原因就是没开源。现在是完全开源,还是部分开源?

思寒_seveniruby 将本帖设为了精华贴 08月17日 17:29
simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44
simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08

想问问现在完全开源了吗

楼主,请问现在这个工具支持多个设备同时遍历吗?

Justin #148 · 2019年11月16日 Author
AllenLuosong 回复

一个进程 支持一个设备 没限制啊 限制源于 USB 口

想问下 ios 环境怎么搭建

已申请入群,求通过~

Justin #154 · 2021年03月29日 Author

本人针对个人和公司提供有偿 UI 自动化技术、接口自动化技术、接口 mock 技术等培训及测试工具定制开发

有意者请联系 QQ:40690263

Justin #152 · 2018年05月06日 Author

谢谢支持:)

14楼 已删除
141楼 已删除
22楼 已删除
Justin #61 · 2018年05月16日 Author

目前还不支持其它地方 input

72楼 已删除
71楼 已删除
Justin #90 · 2018年05月30日 Author
Smile 回复

我这几天忙 有空时我试一下 看看运行是什么效果 然后告诉你

44楼 已删除
Justin #40 · 2018年06月05日 Author

新版已经上传到百度网盘 , 遇到问题的朋友就先下载最新版 jar 和 config.yml

修改了 Windows 运行失败的问题
修改了 Windows 上 HTML 报告乱码的问题

支持自动滚动页面遍历所有元素吗

9楼 已删除
99楼 已删除
18楼 已删除
14楼 已删除
143楼 已删除
仅楼主可见
仅楼主可见
仅楼主可见
回复内容未通过审核,暂不显示
Justin #12 · 2018年05月07日 Author

至于区别用了就知道了 实践出真知 哈

wangchen_neuq 回复

谈不上什么改进,遍历的方法不同 appcrawler 做的还是比较完善的 我这个只提供比较基础的遍历功能。再者 app cralwer 我也没怎以用过。。。

hellohell 回复

谢谢支持 这个工具只是简单的点击 UI 上的元素 发现因元素点击导致的 crash 问题 比较适用界面复杂 层次比较深的 app 至于预期结果能不能定制,我的回答是 预期结果就是不 crash :) 不 crash 也只能说明 app 基本上还算稳定 ,算是稳定性测试的辅助手段

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册