https://testerhome.com/topics/5718
结贴
感谢 appcrawler 群里的一群热心的同学内测, 七夕节放出, 送给单身狗们共勉
AppCrawler 1.4.0 20160809 版本内测地址
zip 包地址: https://pan.baidu.com/s/1gf4Wjpp
jar 包地址: https://pan.baidu.com/s/1dFAzTrb
帮助文档地址: https://pan.baidu.com/s/1jHFzkwA
AppCrawler 1.4.0
app爬虫, 用于自动遍历测试. 支持Android和iOS, 支持真机和模拟器
移动测试技术交流 https://testerhome.com
感谢: 晓光 泉龙 杨榕 恒温 mikezhou
Usage: appcrawler [options]
-a, --app <value> Android或者iOS的文件地址, 可以是网络地址, 赋值给appium的app选项
-c, --conf <value> 配置文件地址
-p, --platform <value> 平台类型android或者ios, 默认会根据app后缀名自动判断
-t, --maxTime <value> 最大运行时间. 单位为秒. 超过此值会退出. 默认最长运行3个小时
-u, --appium <value> appium的url地址
-o, --output <value> 遍历结果的保存目录. 里面会存放遍历生成的截图, 思维导图和日志
--capability k1=v1,k2=v2...
appium capability选项, 这个参数会覆盖-c指定的配置模板参数, 用于在模板配置之上的参数微调
-vv, --verbose 是否展示更多debug信息
--help
示例
appcrawler -a xueqiu.apk
appcrawler -a xueqiu.apk --capability noReset=true
appcrawler -c conf/xueqiu.json
appcrawler -c xueqiu.json --capability udid=[你的udid] -a Snowball.app
appcrawler -c xueqiu.json -a Snowball.app -u 4730
appcrawler -c xueqiu.json -a Snowball.app -u http://127.0.0.1:4730/wd/hub
大量的代码重构. 不排除有 bug.
修复了之前反馈的思维导图打不开的问题.
参数使用做了微调
修改为点击前截图. 并在截图里用红线标记下要被点击的元素.
1.5.0 [计划中]
支持断点续传机制
支持自动重启 appium 机制, 用于防止 iOS 遍历内存占用太大问题
支持 url 的 xpath 过滤
分离插件到独立项目
标准的 html 报告
QQ 群: 177933995
群问题: appium 根据 xpath 定位的 api 叫什么?
为了拒绝小白们各种低级重复问题, 加群有问题, 申请加群时写上对的答案才能入群. (大家回帖不要透露答案哦)
实在不会的, 又想入群的, 请自觉打赏本帖. 并把打赏金额比如 1.6 写到加群申请里即可.
我会把钱分给解答问题的群管.
自动遍历有他独特的价值, 但是他并不能替代你的业务测试. 所以请合理的使用. 随着 app 的质量越来也高, 它的作用就会越来越小.
已经在群内内测了
---
#插件列表. 目前有五六个插件
pluginList:
- "com.xueqiu.qa.appcrawler.plugin.TagLimitPlugin"
#log的日志级别, 也可以通过命令行的-vv参数来显示更多log
logLevel: "TRACE"
#是否保存截图, 设置为false可加快速度. 一般截图耗时在3s-10s之间
saveScreen: true
#截图最长等待时间
screenshotTimeout: 20
#当前使用的平台. 会根据app文件的后缀重新判断. 可不填写.
currentDriver: "android"
#最大运行时间
maxTime: 10800
比如
#支持简单的scala表达式, MiniAppium是一个全局的Object, 你可以调用他的基本方法实现定制化支持
startupActions:
- "MiniAppium.swipe(\"left\")"
- "MiniAppium.swipe(\"left\")"
- "MiniAppium.swipe(\"left\")"
- "MiniAppium.swipe(\"left\")"
- "MiniAppium.swipe(\"down\")"
厉害,都到 1.4.0 版本了,抽空研究一下,有个疑问就是,遍历测试个人认为通过一些方法把 app 所有的路径覆盖一遍,把图截下来。根 testin 云测提交测试的时候,有遍历测试的选择,但是一直疑问,它具体的价值和作用是什么?难道是截图后 tester 自己对着图看一遍吗?@seveniruby
强大,用来配合我的内存泄露检测应该不错,改天试试
—— 来自 TesterHome 官方 安卓客户端
太好了,立马试用一下
#3 楼 @seveniruby ok,那我看一下 newmonkey,有分享的 ppt 或演讲的连接不?
如果有动态页面的话,是不是会 dump 失败?
七夕礼物 666
赞 1 个,回去后,下 jar 包研究看看。
马住 试用!
图片上进行标注这个功能很吊,什么技术,比较好奇
#11 楼 @sanlengjingvv 不错, 我就是这么做的, 我最近也刚开始用 MLeaksFinder 测试 iOS 的内存泄漏
思寒开发效率很高!
试用了半个月,点击效率确实不错。
但是有个疑问,我发现 Appcrawler 默认使用的是unicodeKeyboard
,这样的话ANDROID
的BACK
按键不就失效了吗?在我这边是有这个情况的。
提个建议,startUpAction 可以再丰富些。App 打开后的引导流还是有些坑的/.~自己改了一版。
稍微动了一下。
#17 楼 @seveniruby
哈,刚开始看有些绕。几个关键的点搞明白了倒还好。
思寒,你们设备上BACK
键都 OK 的?
发现 1 个 crash 问题,利器!
请问 1.4 版本不支持 appium1.4 吗?启动时报错如下:
App com.xueqiu.qa.appcrawler.Crawler *** FAILED ***
org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: UiAutomator quit before it successfully launched) (WARNING: The server did not provide any stacktrace information)
#23 楼 @jennyyung 这是 appium 的问题. 你自己排查吧.
#22 楼 @seveniruby 恩,这也是个方式。我看了test
里的内容。
很强大,加入 FunSuite,让 AppCrawler 不再只是一个爬虫那么简单了...
#24 楼 @seveniruby 好的,另外想问一下 #18 楼的测试用例怎么执行?看 help 里没有对应的参数。
👏
—— 来自 TesterHome 官方 安卓客户端
#11 楼 @sanlengjingvv ,好的谢谢指点
#6 楼 @seveniruby 思寒,这个工具不支持已经安装里的 apk 吧,比如 app 已经安装了,直接指定报名(com.xxx.xx)进行遍历
#26 楼 @jennyyung 那个功能需要的知识点有点多, 暂时未公开.
我输入命令行后,一直没有反应,求解?
日志如下:
/Users/hyper/Downloads/appcrawler-1.4.0/bin/appcrawler -a ShunDeBank_2.0.1_DEBUG.apk
2016-08-10 20:49:05 INFO [AppCrawler$.main.98] verbose=false
2016-08-10 20:49:05 INFO [AppCrawler$.main.119] Set Platform=Android
2016-08-10 20:49:05 INFO [AppCrawler$.main.141] app path = /Users/hyper/Downloads/ShunDeBank_2.0.1_DEBUG.apk
2016-08-10 20:49:05 INFO [AppCrawler$.main.148] appium address = Some(http://127.0.0.1:4723/wd/hub/)
AppCrawlerTestCase:
2016-08-10 20:49:06 INFO [AndroidCrawler.initLog.23] set com.xueqiu.qa.appcrawler.AndroidCrawler@46ff33c6 log level to INFO
1001 [main-ScalaTest-running-AppCrawlerTestCase] INFO com.xueqiu.qa.appcrawler.AndroidCrawler - set com.xueqiu.qa.appcrawler.AndroidCrawler@46ff33c6 log level to INFO
1001 [main-ScalaTest-running-AppCrawlerTestCase] INFO com.xueqiu.qa.appcrawler.AndroidCrawler - set com.xueqiu.qa.appcrawler.AndroidCrawler@46ff33c6 log level to INFO
1001 [main-ScalaTest-running-AppCrawlerTestCase] INFO com.xueqiu.qa.appcrawler.AndroidCrawler - set com.xueqiu.qa.appcrawler.AndroidCrawler@46ff33c6 log level to INFO
1001 [main-ScalaTest-running-AppCrawlerTestCase] INFO com.xueqiu.qa.appcrawler.AndroidCrawler - set com.xueqiu.qa.appcrawler.AndroidCrawler@46ff33c6 log level to INFO
1001 [main-ScalaTest-running-AppCrawlerTestCase] INFO com.xueqiu.qa.appcrawler.AndroidCrawler - set com.xueqiu.qa.appcrawler.AndroidCrawler@46ff33c6 log level to INFO
2016-08-10 20:49:06 INFO [AndroidCrawler.addLogFile.105] result directory = Android_20160810204906
2016-08-10 20:49:06 INFO [AndroidCrawler.start.126] prepare setup Appium
2016-08-10 20:49:06 INFO [AndroidCrawler.setupAppium.36] url=http://127.0.0.1:4723/wd/hub/
2016-08-10 20:49:06 INFO [AndroidCrawler.setupAppium.37] Capabilities [{automationName=Appium, platformVersion=, app=/Users/hyper/Downloads/ShunDeBank_2.0.1_DEBUG.apk, autoWebview=false, deviceName=demo, platformName=, appActivity=, autoLaunch=true, unicodeKeyboard=true, appium=http://127.0.0.1:4723/wd/hub/, appPackage=, noReset=false}]
Windows 下 Appium 版本只有 1.4,请问楼主 windows 下如何实现完美运行 AppCrawler?
思寒,想请问截图标注是如何实现?
怎么画九宫格?
我还没有尝试过,下载下来体验一把
amazing
—— 来自 TesterHome 官方 安卓客户端
#29 楼 @seveniruby 但是如何指定要跑的 app 呢,如果 app 已经安装
#38 楼 @zhangyida 恩,看到了,谢谢
UiAutomator quit before it successfully launched 求解?
https://testerhome.com/topics/715 社区帖子里面有类似问题出现,按照思寒推荐方法没能解决,请问大家有遇到这个问题么,求指点。
@seveniruby
运行环境:
PC: win7
Appium: 1.4.16
appcrawler:1.4
执行命令 appcrawler - a xueqiu.apk
#41 楼 @victors java -jar appcrawler-1.2.1.jar -p android -o demo/ -u http://127.0.0.1:4723/wd/hub --capability appActivity=.********* --app *******
参考
#43 楼 @pacerron 参考命令行格式?我看你用的是 1.2.1 版本
#42 楼 @pacerron
是手机 uiautomator 存在问题,已修复,在 appcrawler 1.2.1 版本上可以正常遍历,非常感谢!
但是尝试 appcrawler 1.4 版本 尚未成功,文档中快速遍历命令行 “appcrawler -a xueqiu.apk”
err :
info: [debug] executing cmd: "D:\Program Files\adt-bundle-windows-x86_64\sdk\pla
tform-tools\adb.exe" -s 7731G11044C090389 shell "am start -S -a android.intent.a
ction.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n com.xueqiu.andro
id/.com.squareup.leakcanary.internal.DisplayLeakActivity"
error: Activity used to start app doesn't exist or cannot be launched! Make sure
it exists and is a launchable activity
这个问题还没有解决。
遍历时间可以自定义吗?
想利用 appcrawler -c xueqiu.json -p android -a xueqiu.apk 进行遍历
报如下错误
win7 下执行的,请问哪里出了问题,请各位帮忙看下。
Exception in thread "main" java.nio.charset.UnmappableCharacterException: Input
length = 2
at java.nio.charset.CoderResult.throwException(CoderResult.java:278)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:338)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.read1(BufferedReader.java:203)
at java.io.BufferedReader.read(BufferedReader.java:279)
at java.io.Reader.read(Reader.java:140)
at scala.io.BufferedSource.mkString(BufferedSource.scala:96)
at com.xueqiu.qa.appcrawler.CrawlerConf.load(CrawlerConf.scala:152)
at com.xueqiu.qa.appcrawler.AppCrawler$.main(AppCrawler.scala:113)
at com.xueqiu.qa.appcrawler.AppCrawler.main(AppCrawler.scala)
也在踩 windows 的坑中...
@seveniruby 发现一个问题,1.4.0 和 1.2.1 是不是执行 config 文件的策略也不一样了?我同一个 config 文件,在 1.2.1 和 1.4.0 下感觉遍历策略很不同哦
#49 楼 @guaixiaomei 有个对比的结果吗, 看看差别在哪了. 部分的确有差别.
#50 楼 @seveniruby 嗯,不容易呀,编码问题一大痛。思寒可以收一台苏菲当测试机去~哈哈