• AppCrawer使用入门(转自https://www.cnblogs.com/alwayswyy/p/7576964.html,感谢原作者)


    1、下载

    https://pan.baidu.com/s/1bpmR3eJ

    2、java -jar appcrawler-2.4.0-jar-with-dependencies.jar -demo【在安装目录下】

     会在执行目录下生成一个demo.yalm文件

    二.执行步骤:
    1.手机安装好最新的安装包,不需要登陆(避免不能遍历登陆前的页面内容,且登录后再进行遍历会出现activity不一致的报错,即和launchActivity不一致)
    2.开启appium服务
    在命令行中输入: appium ,提示: 则开启成功(desk版本也可以)
    3.在放 appcrawler-2.4.0-jar-with-dependencies.jar 的文件夹下执行以下命令:
    Java -jar appcrawler-2.4.0-jar-with-dependencies.jar -a xxx.apk -c config.yml --output xxx/xxx
    参数说明:
    Java -jar appcrawler-2.4.0-jar-with-dependencies.jar 用来启动appcrawler
    -a 后面跟安装包的名字 (用于自己手机没有安装包的时候的使用)
    -c 后面跟自定义的配置文件的路径和名字
    -output 后面跟输出的报告所在的文件夹,如果没有写,则会自动生成一个以时间为文件夹名字的报告文件
     
      logLevel:日志级别
      saveScreen:是否截图
      reportTitle:报告名字
      screenshotTimeout:屏幕超时时间
      currentDriver:当前设备(Android/iOS)
      resultDir:结果文件夹名,给定后,将不动态命名
      tagLimitMax:ios的元素tag控制
      tagLimit:给tag
      maxTime:最大运行时间
      showCancel:应该是控制是否展示注释
      capability:用于配置appium
      androidCapability:Android专属配置,最后会和capability合并
      iosCapability:iOS专属配置
      urlWhiteList/blackList:白名单/黑名单
      xpathAttributes:用来设定可以用那些种类型去定位控件
      defineUrl:用来确定url的元素定位xpath 他的text会被取出当作url因素(没理解)
      baseUrl:设置一个起始url和maxDepth, 用来在遍历时候指定初始状态和遍历深度
      maxDepth:默认的最大深度10, 结合baseUrl可很好的控制遍历的范围
      appWhiteList:app白名单,如果跳转到其他app,需要设定规则,是否允许停留在次app中
      headFirst:是否是前向遍历或者后向遍历
      enterWebView:是否遍历WebView控件
      urlBlackList:url黑名单.用于排除某些页面
      urlWhiteList:url白名单, 第一次进入了白名单的范围, 就始终在白名单中. 不然就算不在白名单中也得遍历.
                    上层是白名单, 当前不是白名单才需要返回
      defaultBackAction:默认的返回动作(没看到例子,貌似不特指的话,是click)
      backButton:给一些返回控件,用于返回动作使用
      firstList:优先遍历元素
      selectedList:默认遍历列表,如果不是指定的类型,而是确定控件,会分别点击控件
      lastList:最后遍历的元素
      blackList:排除某些控件
      triggerActions:制定规则(action、xpath、times)
      autoCrawl:自动抓取,看源码指定true后运行crawl(conf.maxDepth)命令
                 (crawl——清空堆栈 开始重新计数)应该是appcrawler的主要方法
      asserts:断言,用于是否失败的判断
      testcase:测试用例,看appcrawler日志,每次都是首先运行用例才会往下执行
      beforeElementAction:貌似没什么人用,字面意思在元素动作之前
      afterElementAction:与beforeElementAction的待遇差不多
      afterUrlFinished:也是很冷门的待遇
      monkeyEvents:monkey的点击数
      monkeyRunTimeSeconds:monkey运行时间
      given是条件 或输入  when是触发条件和动作 then是断言
    4、一次ctrl+c生成报告,两次ctrl+c是强行退出
    5、终端输入Scala进入Scala解释器,输入:q或:quit退出解释器
    6、遍历的深度应该怎么设置好,总是跳到其它页面,就回不到当前页面继续遍历了,看文档 通过黑白名单 
    7、设置一个起始url和maxDepth, 用来在遍历时候指定初始状态和遍历深度
    四. 遇到的问题有哪些?如何解决
    1.登录:
    因为APP的登录页面是用户名+验证码,由于该页面按钮众多且有验证图标,需要滑动解锁很复杂,所以选用了账号密码登录的方式
    (1)设置 账号密码登录 按钮为白名单,即必须点击,此时一定会编辑进入账户名密码登录页面,配置如下:
    urlWhiteList:
    - //*[contains(@resource-id, "login_36kr_ll") and @clickable='true']
    #必须遍历账号密码登录的按钮
    (2)设置账号密码登录中,用户名和密码元素的触发器,当定位到这两个元素时,输入用户名和密码,配置如下:
    triggerActions:
    # 主要解决登录的问题,当遇到登录输入框时,输入内容,比testcase更好用
    - action: "177*******"
    xpath: "//*[@resource-id='com.android36kr.investment:id/login_36kr_phone_edit']"
    times: 1
    - action: "123456"
    xpath: "//*[@resource-id='com.android36kr.investment:id/login_36kr_pass_code']"
    times: 13)设置账号密码登录中,输入用户名和密码后,按照遍历顺序,接下来有一个忘记密码的点击事件开启了新页面,为了避免登陆的多余操作,将 忘记密码 这个元素设置为黑名单,不进行遍历,配置如下:
    urlBlackList:
    - //*[contains(@resource-id, "login_36kr_forgot_pass") and @clickable='true']
    # 忘记密码,避免登陆时按照遍历顺序影响登陆
    2. 聊天详情页
    因为是线上包,为了避免点击交换名片,直接发送联系方式给线上用户,所以 将 交换名片的按钮设置 为 黑名单
    3.聊天详情页
    聊天详情页的项目卡片点击后重新进入到项目页面,导致重复遍历,所以将项目卡片的可点击元素设置为 黑名单
    4.头像部分
    点击头像会调起相机,导致运行到此处就 shutdown ,所以设置所有可点击的头像部分都为 黑名单,运行就正常了。
     
  • 相关阅读:
    凤凰网面试经历——钢管舞也算精英文化吗
    立此为证:豆瓣要做电影数字发行了(2010818)
    Officially GoldenGate was purchased by oracle in October 1, 2009
    11gR2新特性:Heavy swapping observed on system in last 5 mins.
    Oracle BMW Racing sailing vessel帆船图
    Know more about CBO Index Cost
    Samsung Epic 4G 图文介绍
    Oracle Exalogic X22 HalfRack DiagramExaloic半配图
    Java 编程下线程的生命周期
    Android 编程组件Fragments 的生命周期与 Activity 的生命周期之间的关系
  • 原文地址:https://www.cnblogs.com/huoyunxieshen/p/12931616.html
Copyright © 2020-2023  润新知