https://github.com/lgxqf/UICrawler
QQ 技术交流群 : 728183683
环境搭建及基本使用说明: https://testerhome.com/topics/14490 (感谢网友 harsayer 倾力之作)
Android
appium --session-override -p 4723
-p 设定appium server的端口 , 不加参数默认为4723
java -jar UICrawler.jar -f config.yml -u udid -t 4723
-u 指定设备udid
-t 指定appium server的端口(此项为可选项,默认值是4723)
java -jar UICrawler.jar -f config.yml -u udid -t 4723 -m
#小程序
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文件路径
预期结果
?还是遍历后不 crash,就认为达到测试目的了?谈不上什么改进,遍历的方法不同 appcrawler 做的还是比较完善的 我这个只提供比较基础的遍历功能。再者 app cralwer 我也没怎以用过。。。
谢谢支持:)
谢谢支持 这个工具只是简单的点击 UI 上的元素 发现因元素点击导致的 crash 问题 比较适用界面复杂 层次比较深的 app 至于预期结果能不能定制,我的回答是 预期结果就是不 crash :) 不 crash 也只能说明 app 基本上还算稳定 ,算是稳定性测试的辅助手段
我们公司有个同事给我推了这个工具,这个工具是 github 上开源的吗?
支持,老早之前看到@quqing也写了一个 java 版本的,后来自己集合这 2 者也做了一个广度优先的版本
至于区别用了就知道了 实践出真知 哈
appcrawler 的不太清楚 你可以参考 iosmoney 里面也有截图时加红点
forEach+random 搞定这个问题
等过一阵放出了源码 你可以研究一下 就是调用 java 的下些库函数 在图片上画圆
期待楼主完善,之后可以申请加精
学习了一下 appcrawler,奈何源码是 Scala 的,看起来比较吃力,非常期待您的 java 版 UIcrawler 源码,BTW,后续要是也能支持自己写插件就更好了,楼主加油!
在三星 s7 edge 上测试了一下,发现进入一个页面以后,要等待很长时间才会有下一步操作。
Good to know about that :)
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
大佬大佬,学习了
我 15 岁就出来打工,从以前的一无所有到现在的身无分文,我就是我,看到自己都上火。其实也不要为了眼前的境地而悲伤,也许明天更绝望了。
adb -s MYV0215818005565 shell getprop | grep version.sdk 这个是 linux 上运行的命令 你的电脑是 windows?
白名单的意义是 所有包含白名单文本的控件 有会被点击多次 (元素遍历会限制同一个元素只点击一次,白名单中的元素无些限制)
单独运行这个命令是没问题的哦!可以成功返回:
adb -s MYV0215818005565 shell getprop | grep version.sdk
[ro.build.version.sdk]: [23]
帮忙解决一下撒~~否则你的工具在 mac 上用不了哎
mac 上面没有 /system/bin 目录哦!
我就是在 mac 上开发的 也是在 mac 上测试的 没有这个问题啊 你用 env 查查 SHELL bash 的目录是什么?
请看下面的例子,进入 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
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)
但是实际结果就是在 adb shell 后台运行了 grep 结果报错。你这边能处理一下吗?例如先获取出来之后用 java 来截取版本。
谢谢支持 下个月估计差不多能开源 还有一些 bug 没改完 功能上还需要完善一下 然后就可以开源了
恩 因为加入了测试回放的功能 引入了一些包 所以比较大。。。
好 我发你 qq 邮箱
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)
运行直接报这个错
我百度的结果就是打包的时候有问题
1.第一种解决:导入jcommander-1.48.jar包后运行.
下载路径为:http://download.csdn.net/detail/u010340178/9782044
2.创建项目的时候,选择JRE时要选择第二个,选择第一个就会报这样的错误。
我加你 qq 你是谁? 哈哈哈
OK 我 qq 发你我的微信 我不怎么用 qq
最新版 Jar 包和配置文件已上传至 https://pan.baidu.com/s/1mNci6SWNHPuLj_mvrfgIbg#list/path=%2F
目前还不支持其它地方 input
感觉整个流程操作动作,比较慢,能不能优化一下操作速度~
UI 遍历时确实是慢,因为要界面分析,要截图还要保证 所有截图都能正确生成。 Monkey 的功能已经优化,比原来快了。 你可以下新版试试
楼主,我使用的是 appium-desktop 的,启动后执行你那个命令时报错,我看了下报的是"JAVA_HOME is no set currently,please set JAVA_HOME",但是我 java_home 是没有问题的,求解答!!
同一个公司的。。。我在线这边的
你这是环境的问题啊 npm install -g appium-doctor 然后运行 appium-doctor 看看报什么错
下载太慢了,无论是网盘下还是迅雷,都是 20kb/s....
qiu
求解这是什么原因
你的命令错了 删掉 udid : java -jar UICrawler.jar -f config.yml -u 设备 udid -t 4723
总是进入到入口 activity 后就退回到桌面,然后就一直不动
这是什么问题 APP 已经启动成功了,为什么说 APP 包无效?然后一直在重复启动 APP。手机系统是:5.0.2
楼主求解
已发~
QQ 技术交流群 : 728183683
https://github.com/lgxqf/UICrawler/blob/master/doc/Config.md
NODE_NAME_EXCLUDE_LIST:
STRUCTURE_NODE_NAME_EXCLUDE_LIST:
@lgxqf 这两个没注释
ios developer 选项里的 enable UI autoamtion 功能打开了吗
我这里 ios 也跟 109 楼报一样的错
我的 Android 已运行启动 APP 的登录页面,就报错了
新版已经上传到百度网盘 , 遇到问题的朋友就先下载最新版 jar 和 config.yml
修改了 Windows 运行失败的问题
修改了 Windows 上 HTML 报告乱码的问题
@lgxqf 有开源计划么
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)
哪位大神指导这个怎么解决?
支持自动滚动页面遍历所有元素吗
用谷歌打开测试报告乱码是为什么呢,设置了谷歌的编码格式
这几种编码格式都试过,还是乱码,请问这是为什么,生成的测试报告在哪里可以修改编码格式呢
用 HTML 编辑器打开 report.html 找到 UTF-8 改编码格式. 这个问题我记得已经解决了 你下载的什么时候的版本 是最新版吗
楼主,这些以源码已经开源了吗
楼主能帮看看这是什么错误吗
Doc is updated to latest version, feel free to let me know if you any suggestion about this tool :)
这个工具的 Monkey 功能有人用过吗?现在需要一些反馈,看看如何增强对 Monkey 功能的支持
@seveniruby 怎么才能申请加精?
想问问现在完全开源了吗
楼主,请问现在这个工具支持多个设备同时遍历吗?
想问下 ios 环境怎么搭建
已申请入群,求通过~
本人针对个人和公司提供有偿 UI 自动化技术、接口自动化技术、接口 mock 技术等培训及测试工具定制开发
有意者请联系 QQ:40690263