Google官方出了一款App遍历工具App Crawler。

文档:https://developer.android.google.cn/training/testing/crawler

App Crawler工具是Android Jetpack的一部分,它可自动的运行你的App,不需要编写或维护任何代码。

通过App Crawler运行App,自动的执行动作(点击、拖动等)遍历你的App。当没有其他特殊的操作要执行、应用程序崩溃或达到超时时间,App Crawler将自动停止。

Crawler进行测试非常简单,因为不需要编写和维护任何代码。你可以在各种设备上运行它来查找崩溃、视觉或性能问题。我们可以将它部署成云服务,这样可以更快地测试不同屏幕的大小、硬件配置下App的运行情况。

目标人群

App Crawler的目标用户是那些希望以最少配置确保App基本功能的开发人员。除了纯黑盒测试之外,还可以配置App Crawler来设置特定的输入,比如登录凭证或deep links。

开始使用

在开始之前,你必须安装最新版的Android SDK,你可以安装Anroid Studio来获取,如果你已经安装了Android SDK,取保它包含最新的build tools和platform tools.

下载 App Crawler:https://dl.google.com/appcrawler/beta1/app-crawler.zip

接下来,启动Android模拟器,或者通过USB连接一台Android手机,通过ADB工具检测设备。

> adb devices
List of devices attached
6QDDU196XXXXXX device

将下载的 app-crawler.zip 包解压,进入到解压目录。

> cd app-crawler
> ls
README
crawler_app.apk
debug.keystore
crawl_launcher.jar
crawler_stubapp_androidx.apk

执行下面的命令:

java -jar crawl_launcher.jar --apk-file D:/android/com.meizu.flyme.flymebbs_40001003.apk --app-package-name com.meizu.flyme.flymebbs --android-sdk D:/android/sdk

App Crawler运行完成会生成./crawl_output/目录,里面遍历的每一步的截图和更多的日志信息。

Crawler 选项

你可以在使用Crawler时跟以下选项。

Option Description
--android-sdk 指定Android SDK路径。 此选项必填。
--apk-file 指定你的App APK路径,App Crawler会对它进行安装和爬取。如果没有指定 —app-package-name选项,请使用此选项。
--app-package-name 指定App包的名字。当应用程序已安装在设备上,且不需要重新安装时,请使用此选项。
--key-store 指定给App和 Crawler APKs签名的密钥存储库的路径。当您的应用程序需要特定的签名才能正常运行时,请使用此选项。
--key-store-password 指定为 --key-store 选项提供的密钥存储库的密码。如果指定了--key-store,那么这是必需的标志。
--timeout-sec 指定Crawler运行超时时间,单位为秒,如果没有设置,默认为60s

已知问题

删除原始签名文件失败。

如果你安装的是JDK9, Crawler运行的时候会抛出以下错误信息:

androidx.test.tools.crawler.launcher.exceptions.ApkSigningException: Failed to delete original signature files

如果遇到这种情况,我们建议使用JDK 8或10+。有关此问题的更多信息,请参见JDK 9错误。一些用户通过使用更新版本的Android Studio重新构建他们的APK解决了这个问题。

最新文章

  1. HTML5零基础学习Web前端需要知道哪些?
  2. (原创)mybatis学习一,夯实基础
  3. Codevs 1910递归函数
  4. iPad 多任务 Spilt View & Size Class
  5. 【leetcode】Substring with Concatenation of All Words (hard) ★
  6. 学习springMVC框架配置遇到的问题-数据写入不进数据库时的处理办法
  7. 华为OJ平台——超长正整数相加
  8. python笔记第二天
  9. Redis的Set操作
  10. C++运算符重载的规则
  11. Android 用代码来实现selector
  12. Java NIO框架Netty demo
  13. ETL概述
  14. 全局键盘钩子(WH_KEYBOARD)
  15. npm安装删除模块以及cnpm淘宝镜像
  16. pycharm linux版快捷方式创建
  17. python的函数学习2
  18. (转)eclipse上传项目到码云
  19. Mysql数据引擎和系统库
  20. sphinx编译安装

热门文章

  1. CodeM资格赛 优惠券
  2. Mysql InnoDB引擎下 事务的隔离级别
  3. pyppeteer的使用
  4. mybatis foreach批量处理
  5. String对象为什么不可变
  6. springboot统一ajax返回数据格式,并且jquery ajax success函数修改
  7. SpringBoot应用启动过程分析
  8. android中的菜单Menu
  9. 去掉网页中alert和confirm弹出框自带的网址
  10. Linux 笔记 - 第九章 Linux 中软件的安装