Appcrawler

AppCrawler是一款用于自动遍历测试的工具,支持Android和iOS应用,可在真机和模拟器上运行。该工具能自动生成测试用例,进行界面遍历,并支持截图、日志记录及报告生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初识 appcrawler

  • github 下载2.4.0版本
  • AppCrawler 2.4.0 [霍格沃兹测试学院特别纪念版]
  • Appium 1.8.1 Java8 tested
  • app爬虫, 用于自动遍历测试. 支持Android和iOS, 支持真机和模拟器

安装命令如下

java -jar appcrawler-2.4.0-jar-with-dependencies.jar


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

继续,遍历雪球

java -jar appcrawler-2.4.0-jar-with-dependencies.jar --capability “appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias”

生成配置文件命令

java -jar appcrawler-2.4.0-jar-with-dependencies.jar --demo

配置文件的说明可参考

https://github.com/seveniruby/AppCrawler/blob/2.3.1/src/main/scala/com/testerhome/appcrawler/CrawlerConf.scala

---
pluginList: []     
saveScreen: true    //是否保存截图
reportTitle: "张璐"    //报告内容 
resultDir: "20190907092459"    //文件名称,留空表示默认按时间戳
waitLoading: 500        //等待下一个界面渲染完
waitLaunch: 6000        //什么时候app可以启动完
showCancel: true        //是否展示未遍历到的节点
maxTime: 10800
maxDepth: 10            //遍历的最大深度10个页面
capability:             //与appium一样
  noReset: "true"       //默认为true,不重置所有的数据
  fullReset: "false"
  appium: "http://127.0.0.1:4723/wd/hub"
# 也可以将上面命令行执行的参数放置此处,指明appPackage和appActivity
# 配置文件指明后运行命令直接 java -jar ...  -c demo_new.yml 即可
  appPackage:“com.xueqiu.android”    //指明包名和Activity 有运行入口即可
  appActivity:".view.WelcomeActivityalias"

testcase:
  name: "TesterHome AppCrawler"
  steps:
  - given: []
    when: null
    then: []
    xpath: "/*"
    action: "Thread.sleep(5000)"
    actions: []
    times: 0
selectedList:
- given: []
  when: null
  then: []
  xpath: "//*[contains(name(), 'Button')]"
  action: null
  actions: []
  times: 0
- given: []
  when: null
  then: []
  xpath: "//*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10]"
  action: null
  actions: []
  times: 0
- given: []
  when: null
  then: []
  xpath: "//*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10]"
  action: null
  actions: []
  times: 0

testcase的先决条件:

  • given 所有的先决条件
  • when 先决条件成立后的行为
  • then 断言集合,通过xpath断言集合在不在
    在这里插入图片描述
    testcase的简写形态:
  • xpath对应when里的xpath
  • action对应when里的action

定位模式XPATH

  • xpath 都可以
    • //*[@resource-id=‘xxx’]
    • //*[contains(@text, ‘密码’)]
  • 正则 表达式也可以
    • ^表示开头 .*表示任一多个字符
    • ^确定$
    • ^.*输入密码
  • 包含(只需给出按钮包含元素的一个字或者多个字即可),例如:输入如下text
    • 密码
    • 输入

action动作支持

  • click
  • “”只是截图记录
  • back后退
  • backApp 回退到当前的app默认等价与back行为 可定制
  • monkey 随机事件
  • xxx()执行代码
    • Thread.sleep(3000)
    • driver.swipe(0.9,0.5,1.5,1.2)
    • longTap

重点:非以上所有行为均是 输入 xx ddd

例如: 点击“沪深”,点击“龙虎榜”,断言是否存在“沪深上榜个股”

testcase:
  name:"TestHomer"
  steps:
  - xpath: 沪深
    action: click
    times: 1
  - xpath: 龙虎榜
    then:
    - //*[contains(@text,'沪深上榜个股')]
  action: click
  times: 1

testcases不能删,必要时可以 testcase [] 表示

自动遍历支持

  • selectedList:需要被遍历的元素范围
    例如:只点击文本,不点击图片,则 可删掉selectedList下的,不是关于文本text的点击
    只点击文本的链接
    在这里插入图片描述

  • firstList:优先被点击

  • lastList:最后被点击
    规定谁先谁后
    在这里插入图片描述

  • tagLimitMax:同类型控件最多点击多少次

  • backButton:当所有都被点击后,最后再点击。默认后退控件定位(返回按钮)

  • blackList :黑名单(注销),加入进即表示不点击这个按钮

  • maxDepth: 6 ,改为1的话,只要离开这个页面就自动返回来

pluginList: []
saveScreen: true
reportTitle: "霍格沃滋测试学院"
resultDir: "2019090709245900000000"
waitLoading: 500
waitLaunch: 6000
showCancel: true
maxTime: 10800
maxDepth: 1   //深度只有1
  • 触发器
triggerActions:
- xpath: 请输入手机号
  action: 184934989
  times: 1
- xpath: //*[password=‘true’]
  action: hys 12345
  times: 1   //使用1次,若去掉则会一直狂点

需要特定次数的触发动作, 通常用于处理弹框
- xpath:用于指定具体按钮
action:动作
times:规则的使用次数

例如:净买入点击10次,总成交额点击5次
在这里插入图片描述

使用 Appcrawler

  1. 先生成配置文件 使用 “–demo”,生成 <demo.yaml>
  2. 打开配置文件,修改符合需求的测试用例
  3. 执行java -jar … -c demo1.yml(需先进入到jar包所在的目录下,才能运行)
  4. 人工检测浏览截图
  5. 编程检查Dom结构
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值