AppCrawler AppCrawler 自动遍历工具 1.5.0 版本

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

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

使用介绍

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

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

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指定的配置模板参数, 用于在模板配置之上的参数微调
  -r, --report             输出html和xml报告
  -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
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册