AppCrawler AppCrawler 自动遍历工具 1.5.0 版本

思寒_seveniruby · 2016年08月17日 · 最后由 思寒_seveniruby 回复于 2016年09月09日 · 3229 次阅读

1.6.0版本已经稳定. 等关注新版本的发布. 结贴

使用介绍

帮助文档: https://www.gitbook.com/book/seveniruby/appcrawler/details

AppCrawler 1.5.0
app爬虫, 用于自动遍历测试. 支持AndroidiOS, 支持真机和模拟器
移动测试技术交流 https://testerhome.com
感谢: 晓光 泉龙 杨榕 恒温 mikezhou yaming116

Usage: appcrawler [options]

-a, --app <value> Android或者iOS的文件地址, 可以是网络地址, 赋值给appiumapp选项
-c, --conf <value> 配置文件地址
-p, --platform <value> 平台类型android或者ios, 默认会根据app后缀名自动判断
-t, --maxTime <value> 最大运行时间. 单位为秒. 超过此值会退出. 默认最长运行3个小时
-u, --appium <value> appiumurl地址
-o, --output <value> 遍历结果的保存目录. 里面会存放遍历生成的截图, 思维导图和日志
--capability k1=v1,k2=v2...
appium capability选项, 这个参数会覆盖-c指定的配置模板参数, 用于在模板配置之上的参数微调
-r, --report 输出htmlxml报告
-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
appcrawler --report -o result/

--report这个参数还没启动. 请忽略

自动遍历用途

自动遍历主要有如下几个价值

  • 遍历基本的界面, 了解主要界面的可用性. 比如兼容性, 基本功能, 这是云平台的遍历提供的基本功能和作用.
  • 利用遍历获取app的加载时间和性能数据, 需要借助其他的性能数据抓取工具,比如OneApm, NewRelic
  • 利用遍历验证app的内存泄漏以及稳定性等功能, 需要借助LeakCanary和MLeaksFinder
  • UI diff 验证新老版本的功能差异. 并识别兼容性问题.
  • 抓取接口请求 辅助验证一些模块基本接口, 并辅助分析接口调用流程.

appcrawler目前还没做到这么强. 只是个小工具. 正在朝这几个方向发展.
目前的地位可以理解为相当于更好的功能遍历的monkey. 可参考下腾讯的newmonkey的演讲.

1.5.0版本特点

解决了windows下的多个不兼容问题.
配置支持yaml并且个别配置不兼容老版本了

支持HTML报告

android报告示例

iOS报告示例

支持XML报告

方便做持续集成

配置文件支持YAML

---
#插件列表. 目前有五六个插件
pluginList:
- "com.xueqiu.qa.appcrawler.plugin.TagLimitPlugin"
- "com.xueqiu.qa.appcrawler.plugin.ReportPlugin"
#log的日志级别, 也可以通过命令行的-vv参数来显示更多log
logLevel: "TRACE"
#是否保存截图, 设置为false可加快速度. 一般截图耗时在3s-10s之间
saveScreen: true
#截图最长等待时间
screenshotTimeout: 20
#当前使用的平台. 会根据app文件的后缀重新判断. 可不填写.
currentDriver: "android"
#最大运行时间
maxTime: 10800
#结果保存目录. 为空会自动生成一个新的时间戳为名字的目录
resultDir: ""

启动脚本支持自定义scala表达式

可以写一些简单的. driver.findElementByName("ddd").click 之类的语句. 用于解决定制化界面启动问题

startupActions:
- "MiniAppium.swipe(\"left\")"
- "MiniAppium.swipe(\"left\")"
- "MiniAppium.swipe(\"left\")"
- "MiniAppium.swipe(\"left\")"
- "MiniAppium.swipe(\"down\")"
- "println(driver)"

已知问题

  • 跳到其他app暂不后退 需要自己设定黑名单过滤下. 因为iOS特殊性还在考虑如何设计

如何获取

下载地址:
AppCrawler 1.5.0 20160817版本
zip包地址: https://pan.baidu.com/s/1boDCbjp

jar包地址: https://pan.baidu.com/s/1cA64Y6
帮助文档地址: http://appcrawler.testerhome.com/
配置文件有更新.

QQ技术交流和新版本内测群: 177933995
群问题: 请给出appcrawler工具pdf文档的路径

加群有问题, 申请加群时写上对的答案才能入群.
不知道答案又想入群的, 请自觉打赏本帖. 并把打赏金额金额比如x.x写到加群申请里即可.
我会把钱分给热心解答问题的群管

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 31 条回复 时间 点赞

试了一下,@seveniruby辛苦啊,为大家贡献了这么棒的一个工具。

另外,貌似对Android 17以下的不兼容吗?我试了启动Selendriod模式,但是看起来run Selendroid自个的测试app都不行。

😛强的咧。
很适合变化快的APP。
6.0以及小米等手机的权限和安装弹窗很多,安装和startup过程容易出现意料之外的情况

赞!

—— 来自TesterHome官方 安卓客户端

赞,顶起来。这个版本看看好用不。

赞,顶起来。正在测试

请给出appcrawler工具pdf文档的路径 ,路径是啥,还真不知道

今天就试用一下,赞思寒 👣

目前遇到的问题,popWin弹框,实现不了

思寒_seveniruby [该话题已被删除] 中提及了此贴 08月18日 11:30
思寒_seveniruby [该话题已被删除] 中提及了此贴 08月18日 13:15

给思寒打赏一下😁 😜

赞,给勤奋的思寒打赏一下

顶!d=====( ̄▽ ̄*)b

赞,版本更新速度越来越快了👍

感谢!正在深度使用中。。。提两个增强的issue:
1.在1.4.0版本中当app出现异常停止,跳入android的activity中的时候,是有截图的,这样可以对此类问题进行捕获,但是1.5.0中没有此类截图了,详情见log和图。
2.接连几个go back如果间隔短,不超过4秒会使某些支持back快捷退出的app退出,这块是否可以手工设置间隔时间。


问一下,iOS下有进入侧边栏的操作,怎么返回呢,返回操作是左滑,在配置文件怎么配置backButton?

qq群加不了? 群主拒绝入群


java -jar appcrawler-1.5.0.jar -a Test-2016.apk -o demo/ --capability appActivity=.ss.index.Test
win7:运用上面命令运行公司自己的应用,第三方的QQ登录提示‘’应用版本较旧‘’。自己手动安装的QQ登录是正确的,求解

试用时有个问题,有find back button error的警告,然后退出应用测试,@seveniruby请问如何解决,多谢。
appcrawler截图

appium截图

#22楼 @eidolon1978 findBackButton报错不会退出. 找不到back键, android默认是用back直接回去的. 你得找找真正的退出原因

楼主辛苦,工具不错。有个问题请教下:出现下面提示后自动遍历就退出了。
win7 64bit上执行的命令
java -jar appcrawler-1.5.0-20160817.jar -u 4730 -c xtcwatch.yml -o xtcwatch/ --capability appPackage=com.xtc.watch,appActivity=com.xtc.watch.MainActivity

日志:
2016-08-31 14:23:37 INFO [AndroidCrawler.doAppiumAction.1053] [[AndroidDriver: Android on LINUX (850a92c1-0d6b-42a9-b1a3-8ad7b05ac585)] -> xpath: //android.widget.RelativeLayout[@index="1" and @resource-id="com.xtc.watch:id/cm_set_layout"]/android.widget.LinearLayout[@index="0" and @resource-id="com.xtc.watch:id/setting_info_layout"]/android.widget.TextView[@index="0" and @resource-id="com.xtc.watch:id/cm_am_time" and @text="上午:08:00-11:30"]]
2016-08-31 14:23:37 ERROR [AndroidCrawler.saveDom.941] save to xtcwatch//10_ClassModeActivity_cm_set_layout-setting_info_layout-cm_am_time-上午:08:00-11:30.dom error
2016-08-31 14:23:37 ERROR [AndroidCrawler.saveDom.942] xtcwatch\10_ClassModeActivity_cm_set_layout-setting_info_layout-cm_am_time-上午:08:00-11:30.dom (文件名、目录名或卷标语法不正确。)

#24楼 @dongyongjun2008 生成的文件名不符合windows的文件命名规范. 新版本已经解决. 等新版本发布吧.

D:\Install\appcrawler-1.5.0\bin>appcrawler -p android -o demo/ -a D:\Install\apk\acp.apk -u http://127.0.0.1
:4730/wd/hub --report -o result/
Error: Unknown option -o
Error: Unknown argument 'result/'
Try --help for more information.

--report -o result/ 这样有什么问题吗 result 也在bin目录下 自己建好了。

D:\Install\appcrawler-1.5.0\bin>appcrawler -p android -o demo/ -a D:\Install\apk\acp.apk -u http://127.0.0.1
:4730/wd/hub -r -o result/
Error: Unknown option -o
Error: Unknown argument 'result/'
Try --help for more information.

D:\Install\appcrawler-1.5.0\bin>appcrawler -p android -o demo/ -a D:\Install\apk\acp.apk -u http://127.0.0.1
:4730/wd/hub -r result/
Error: Unknown argument 'result/'
Try --help for more information.

已崩溃。。。win10环境

#26楼 @harsayer 你的版本是老的啊, 没那个功能. 文档上已经是1.6.0了. 还在内部群内测. 未对外发

#27楼 @seveniruby 新版的要进QQ群去下吗? 还没开源到github?

#28楼 @harsayer 最近改动太多工作又忙, 闭关中. 暂未对外发布.

appcrawler -a xueqiu.apk,启动参数这里如何配置,可以不push安装APK,而是直接遍历?

31楼 已删除
32楼 已删除

@seveniruby ,请问测试报告是怎么生成的?我用 -r 没有效果,没看到有html或xml文件生成

#33楼 @alfredhu 功能在新版本里面. 等新功能吧. 我下周开放新版本出来.

#30楼 @jojotester 可以. 不写-a就行了

思寒_seveniruby 关闭了讨论 09月09日 16:53
思寒_seveniruby AppCrawler 自动遍历工具 1.2.1 版本 中提及了此贴 01月06日 10:23
思寒_seveniruby AppCrawler 自动遍历工具 1.4.0 版本 中提及了此贴 08月24日 19:42
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册