三、AppCrawler自动化遍历工具

1、项目介绍

  • 项目地址:https://github.com/seveniruby/AppCrawler

与其他框架的关系

  • appcrawler底层引擎
    • appium
    • adb
    • macaca
    • selenium
  • appium底层引擎
    • wda
    • uiautomator2AppCra

AppCrawler环境要求

  • appcrawler 2.5
    • java8 appium 1.8.x
  • 安装方法
    • 直接下载
    • 从源代码编译
  • 备注
    • 后面提到的appcrawler命令或者java -jar appcrawler.jar皆表示用jar -jar命令执行对应版本的jar包文件,比如java -jar appcrawler-2.4.O-jar-with-dependencies.jar

2、快速启动quick_start

  • 启动appium
  • 启动模拟器或者连接真机
  • 开始自动遍历
  • appcrawler --capability
    “appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias”

生成样板配置示例

  • java -jar appcrawler.jar --demo
  • 会在当前目录下生成一个demo.yml

常用事件

  • 参数模式
    • java -jar
    • appcrawler --capability “appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias"
  • 配置文件[推荐方式]
    • java -jar
    • -c example.yml\
    • --capability 'appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias'\
    • -o /tmp/xueqiu/1

3、执行参数与配置文件

  • capability设置:与appium完全一致
  • testcase:用于启动app后的基础测试用例
  • selectedList:遍历范围设定
  • triggerActions:特定条件触发执行动作的设置
  • 执行参数比配置文件优先级别高

Capability设置示例

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

自动化支持testcase

  • testcase的完整形态
    • given:所有的先决条件
    • when:先决条件成立后的行为
    • then:断言集合
  • testcase的简写形态
    • xpath:对应when里的xpath
    • action:对应when的action
autoCrawl: true
testcase:
  name: demo1
  steps:
  - when:
      xpath://*
      action: driver.swipe(0.5,0.8,0.5,0.2)
  - when:
      xpath: //*
      action: driver.swipe(0.5,0.2,0.5,0.8)
  - xpath:自选
      action: click
      then:
      - //*[contains(@text,"港股")]

动作支持Action

  • ""只是截图记录
  • back 后退
  • backApp 回退到当前的app 默认等价于back行为 可定制
  • monkey 随机事件
  • xxx() 执行代码
    • Thread.sleep( 3000)
    • driver.swipe( 0.9, 0.5, 0.1 , 0.5 )
  • click
  • longTap
  • 非以上所有行为是输入xx ddd

自动遍历支持

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

触发器

  • triggerActions:
  • 需要特定次数的触发动作
  • 通常用于处理弹框
    • xpath:指定具体按钮
    • action:动作
    • times:规则的使用次数
triggerActions:
- xpath: 请输入手机号
  action:15600534760
  times: 1
- xpath: //*[@password='true']
  action: insane12345678
  times: 1
- xpath: button_next
  action: click
  times: 1

log文件解读

image.png

4、自动遍历过程

  • 信息的获取:
    • 把当前app的界面dump为xml结构
  • 获取待遍历元素
    • 遍历范围selectedList
    • 过滤黑名单 小控件 不可见控件 blackList
    • 重排控件顺序 firstList lastList
    • 跳过已点击+跳过限制点击的控件tagLimit
    • 根据匹配的规则执行action
  • 循环上面的步骤

5、实战

初步使用

  • 命令行输入:java -jar appcrawler-xxx.jar,便可查看其命令
    image.png
  • 命令行中启动已安装的app:java -jar appcrawler-xxx.jar --capability "appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias",开始运行app并生成日志
    image.png
  • 停止运行:ctrl + c
  • 查看日志文件:
    • 操作记录图片:会自动圈出点击的位置


      image.png
    • appcrawler.log,log日志:


      image.png

      image.png

高级用法

  • java -jar appcrawler-xxx.jar --demo,生成demo例子,并在当前目录生成demo.yml文件

    image.png

  • 修改demo.yaml文件

    • 加入capability
    • 加入指定的定位元素


      image.png
  • 运行:java -jar appcrawler-xxx.jar -c demo.yml

  • 指定selectedlist


    image.png
  • 指定遍历顺序:先遍历下方再遍历上方


    image.png
image.png
  • 查看执行报告:index.html


    image.png

    image.png

下一节:多设备管理平台STF。

你可能感兴趣的:(三、AppCrawler自动化遍历工具)