AppCrawler自动遍历测试

摘要:
AppCrawler是seveniruby开发的自动遍历测试工具。谷歌有一个名为AppCrawler的遍历工具。AppCrawler具有极大的灵活性,可以自由控制测试页面、控件类型、测试深度等,并支持Android和IOS应用程序测试。AppCrawler开源地址:https://github.com/seveniruby/AppCrawlerappcrawler基于appium的开发,底层引擎还引用adb、macaca、selenium AppCrawler来安装AppCrawl工具并将其发布为jar包。下载地址为:https://pan.baidu.com/s/1dE0JDCHappcrawler2.4.0java8appium1.8.xAppCrawler运行并启动appiumserver以启动模拟器,或连接到真实机器以开始自动遍历appcrawler--capability“appPackage=com.sueueu.android,appActivity=.view.WelcomeActivityAlias”在使用appcrawler之前,您需要启动appiumserver,然后启动模拟器或连接到实际机器。运行java-jarapcrowler。jar以查看帮助。

AppCrawler 是由 seveniruby开源的一个自动遍历测试工具,谷歌有一个叫App Crawler 的遍历工具。AppCrawler具有很大的灵活性,可以自由控制测试页面,控件类型,测试深度等,且支持Android和IOS应用测试。

AppCrawler开源地址:https://github.com/seveniruby/AppCrawler

appcrawler基于appium开发,底层引擎还引用了 adb、 macaca、 selenium

AppCrawler安装

AppCrawler工具以jar包方式发布,下载地址:https://pan.baidu.com/s/1dE0JDCH

appcrawler 2.4.0

  • java8
  • appium 1.8.x

AppCrawler自动遍历测试第1张

AppCrawler运行
  • 启动 appium server
  • 启动模拟器或者连接真机
  • 开始自动遍历
  • appcrawler --capability
  • "appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivity Alias"

使用AppCrawler前需要启动appium server,然后启动模拟器或者连接真机。运行 java -jar appcrawler.jar 查看帮助。

D:\testing_tools\appcrawler>java -jar appcrawler-2.4.0-jar-with-dependencies.jar

----------------
AppCrawler 2.4.0 [霍格沃兹测试学院特别纪念版]
Appium 1.8.1 Java8 tested
app爬虫, 用于自动遍历测试. 支持Android和iOS, 支持真机和模拟器
项目地址: https://github.com/seveniruby/AppCrawler
移动测试技术交流: https://testerhome.com
联络作者: seveniruby@testerhome.com (思寒)
致谢: 晓光 泉龙 杨榕 恒温 mikezhou yaming116 沐木

--------------------------------


Usage: appcrawler [options]

  -a, --app <value>        Android或者iOS的文件地址, 可以是网络地址, 赋值给appium的app选项
  -e, --encoding <value>   set encoding, such as UTF-8 GBK
  -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 <value>     输出html和xml报告
  --template <value>       输出代码模板
  --master <value>         master的diff.yml文件地址
  --candidate <value>      candidate环境的diff.yml文件
  --diff                   执行diff对比
  -vv, --verbose           是否展示更多debug信息
  --demo                   生成demo配置文件学习使用方法
  --help
示例
appcrawler -a xueqiu.apk
appcrawler -a xueqiu.apk --capability noReset=true
appcrawler -c conf/xueqiu.json -p android -o result/
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

#生成demo例子
appcrawler --demo

#启动已经安装过的app
appcrawler --capability "appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias"

#从已经结束的结果中重新生成报告
appcrawler --report result/

#新老版本对比
appcrawler --candidate result/ --master pre/ --report ./

生成样板配置示例

运行 java -jar appcrawler.jar --demo 会在当前目录下生成一个demo.yml文件。

通过编辑demo.yml文件实现app自动遍历的灵活定制。

D:\testing_tools\appcrawler>java -jar appcrawler-2.4.0-jar-with-dependencies.jar --demo
2020-11-18 20:47:04 INFO [AppCrawler$.86.main]
----------------
AppCrawler 2.4.0 [霍格沃兹测试学院特别纪念版]
Appium 1.8.1 Java8 tested
app爬虫, 用于自动遍历测试. 支持Android和iOS, 支持真机和模拟器
项目地址: https://github.com/seveniruby/AppCrawler
移动测试技术交流: https://testerhome.com
联络作者: seveniruby@testerhome.com (思寒)
致谢: 晓光 泉龙 杨榕 恒温 mikezhou yaming116 沐木

--------------------------------


2020-11-18 20:47:05 INFO [AppCrawler$.223.parseParams] use default appium address 4723
2020-11-18 20:47:05 INFO [AppCrawler$.230.parseParams] appium address = Some(http://127.0.0.1:4723/wd/hub)
2020-11-18 20:47:05 INFO [AppCrawler$.242.parseParams] result directory = 20201118204701
2020-11-18 20:47:07 INFO [AppCrawler$.286.parseParams] you can read D:\testing_tools\appcrawler\demo.yml for demo

AppCrawler自动遍历测试第2张

执行参数与配置文件
  • capability设置:与 appium完全一致

    appPackage: "com. xueqiu.android"
    appActivity: ".view.WelcomeActivityAlias"
    app:
    appium: "http: //127.0.0.1:4723/wd/hub"
    noReset: true
    automationName: uiautomator2
    dontStopAppOnReset: true
    

    AppCrawler自动遍历测试第3张

  • testcase:用于启动app后的基础测试用例

  • selectedList:设定遍历范围

  • triggerActions:特定条件触发执行动作

  • 执行参数比配置文件优先级别高

    java -jar <appcrawler.jar路径> -c example.yml --capability appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias -o /tmp/xueqiu/
    

testcase

testcase的完整形态

  • given:所有的先决条件
  • when:先决条件成立后的行为
  • then:断言集合

testcase的简写形态

  • xpath:对应when里的 xpath
  • action:对应when的 action

AppCrawler自动遍历测试第4张

action

  • back 后退
  • backApp 回退到当前的app默认等价于back行为 可定制
  • monkey 随机事件
  • xxx()执行代码
    • Thread.sleep(3000)
    • driver.swipe(0.9, 0.5,0.1,0.5)
  • click
  • longTap

AppCrawler自动遍历测试第5张

自动遍历定制

  • selectedList:需要被遍历的元素范围
  • firstList:优先被点击
  • lastList:最后被点击
  • tagLimitMax:同祖先(同类型)的元素最多点击多少次
  • backButton:当所有元素都被点击后默认后退控件定位
  • blackList:黑名单
  • maxDepth:遍历的最大深度

触发器

triggerActions:

  • 动作触发特定次数

  • 通常用于处理弹框:关闭弹框

    • xpath:指定具体按钮
    • action:动作
    • times:规则的使用次数

AppCrawler自动遍历测试第6张

自动遍历测试过程
  1. 信息的获取:

    • 把当前app的界面dump为xml结构
  2. 获取待遍历元素

    • 遍历范围 selectedList
    • 过滤黑名单 小控件 不可见控件 blackList
    • 重排控件顺序 firstList lastList
    • 跳过已点击+跳过限制点击的控件tagLimit
    • 根据匹配的规则执行 action
  3. 循环上面的步骤

网页报告
java -jar appcrawler-2.4.0-jar-with-dependencies.jar -c demo1.yml

自动遍历执行完成后,当前目录会生成测试报告index.html
AppCrawler自动遍历测试第7张
打开index.html文件
AppCrawler自动遍历测试第8张

--THE END--

文章标题:AppCrawler自动遍历测试
本文作者:hiyo
本文链接:https://www.cnblogs.com/hiyong/p/14163854.html
欢迎关注公众号:「测试开发小记」及时接收最新技术文章!

免责声明:文章转载自《AppCrawler自动遍历测试》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jQuery的属性操作2.5 整数和算法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Phalcon下命令行应用(command line applications)

今天打算在phalcon项目下加入一个定时任务,来发送邮件。 看了官网的例子,配置和运行都少许杂乱,还有个bug,见备注, 我这边主要讲解如何将command line 的配置独立出来,如果初上手的同学,建议先运行官网第一个例子,成功后,再实践一下官网第二个例子,出现报错,就看我备注,然后再看我这如何将配置独立处理。 借鉴思想:主要借鉴Yii框架中,类似功...

Appium和Robotium在文字输入上的区别

Appium和Robotium在文字输入上的区别 Appium和Robotium在对文本框进行输入时有一定的区别: Appium在输入文字时需要调用系统键盘 Robotium在输入文字是根本不需要调出键盘,文字很快速的就输入完成,感觉不是输入的,而是Copy&Paste 我个人认为造成这种区别的原因应该如下(源码分析验证:TBD): App...

vue中的router-view

Vue适合单页面应用,当你需要多个页面的时候,传统的web是通过转跳链接的方式实现的,而Vue可以通过路由的方式实现页面的专挑 demo: 图片组件: <template> <img src="http://t.zoukankan.com/…/example/img.png/> </template> 组件1 <t...

手把手教你反编译别人的app

虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈。此文想以实际例子出发,告诉大家,如何去反编译一个app,并且从某个角度来说,iOS没有传说中的“安全”。 这里只最简单的结论给大家,具体原理以及工具的详细使用,请各位自行Google,为什么这么做呢,因为我想用最简单的语言,让没有汇编基础的同学也能明白。...

Windows App开发之开发准备

操作系统及SDK 操作系统 显而易见,想要开发Windows App就得在Windows 8/8.1/10上进行,老旧的Windows XP/Vista/7已经不能满足时代的需要了。当然,在Windows App的发展过程中,其本身也有着较大的变动,为了使用新的特性,建议使用Windows 10。我在写这个教程时,Windows 10正式版并未面世,因此...

Win10上启动UICrawler自动遍历时报 "org.openqa.selenium.WebDriverException: An unknown server-side error occur red while processing the command. Original error: Could not sign with default certifi cate."

操作步骤: 1、直接启动 Appium (我用的是 version 1.10.0) 2、打开命令窗口,切换到UICrawler所在路径 3、执行命令java -jar UICrawler-2.23.jar -f config.yml -u deviceSerialNumber 4、执行后不会安装appium所需要特定 apk程序,报错 could not...