范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

自动遍历工具APPCrawler的教程

  简介
  AppCrawler 一个基于自动遍历的 App 爬虫工具。 最大的特点是灵活性,可通过配置来设定遍历的规则。
  谷歌的自动遍历的工具Google App Crawler,设计的思想也一致。
  优点和缺点
  优点AppCrawler是基于 Appium 开发的,所以支持 Android、iOS,支持真机和模拟器对遍历的页面、控件、事件、深度等都可自由控制,可通过配置来设定遍历的规则可通过配置来设定遍历的规则(比如设置黑名单和白名单,提高遍历的覆盖率) 可定制:可自定义操作,如输入,滑动等其本身的遍历深度覆盖较全,比如它拥有APP的dom树,根据每个activity下的可点击元素逐个点击,比monkey更具有规律性,覆盖更全面 生成的报告附带截图,可以精确看到点击了哪个元素及结果,对crash类的问题定位清晰
  缺点 只能定位一页,对于翻页的无法进行下滑再点击,导致下面的内容无法遍历(需要自己设置下滑然后翻页) 对于调用第三方应用的不太稳定,比如每次到上传头像处就停止遍历 对于 整个layout区域是可点击,但是其中某个元素是不可点击的,没有进行遍历点击,比如:左上角的设置和右上角的私信都不能遍历到 对于H5页面无法进行精确的定位点击,比如它的整个布局layout是 一个大模块,不能进行点击 运行速度较慢:AppCrawler是基于appium开发具备了跨平台的优点,但是也因为这层封装造成了运行速度相对较慢使用门槛高:正因为使用灵活性的问题,也造成了使用门槛的提高,主要基于yaml文件中使用appium的相关技术知识进行配置,这就对使用者有了一定的技术要求
  安装和启动Crawler
  1、安装最新版的Android SDK,保证它包含最新的build tools和platform tools
  2、java 11 (18不行)
  3、下载  App Crawler ,解压 app-crawler.zip 包,进入到解压目录
  4、替换 crawl_launcher.jar 为最新版本,记得把名称改成:crawl_launcher.jar。(2023.1.28查看的最新版本是2.7.4)
  5、安装和启动Appium
  控制台输入: appium --session-override, 命令的意思是每次去执行的时候,不需要清理appium这个进程
  6、启动Android模拟器,或者通过USB连接一台Android手机
  通过ADB工具检测设备是否连接: adb devices
  7、启动Crawler 执行后会自动遍历
  启动命令: java -jar crawl_launcher.jar --capability "appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias" 如果是windows 需要给 capability 参数 加上" "修改对应文件的appPackage和appActivity信息,比如java -jar crawl_launcher.jar --capability "appPackage=com.addcn.newcar8891,appActivity=com.addcn.newcar8891.ui.activity.WelcomeActivity"或者使用:java -jar crawl_launcher.jar -a apk/path (如果apk是无法识别包名和活动页面的,需要加上参数capability )
  查看Crawler Option的命令: java -jar crawl_launcher.jar
  8、退出
  控制台输入 ctrl + c  ,生成测试报告。
  它会在当前目录下,生成日期名称的测试报告文件。可以使用 -o 制定测试报告的生成路径。输入两次ctrl +c 是强行停止。
  定制化配置
  以AppCrawler的配置文件完成定制化的自动遍历,以下为介绍配置文件的用法和一些特殊场景的处理。
  配置文件的用法
  模版文件生成
  运行命令:java -jar crawl_launcher.jar --demo, 会在当前目录下生成一个 demo.yml 文件,这进行定制化的配置文件模板。
  添加插件
  测试报告参数
  loglevel 日志等级
  saveScreen 是否截图,一个截图时间 >2s
  reportTitle 报告名称
  capability参数
  与appium完全一致
  可以配置apk、 appPackage、 appActivity
  控制台的命令,是可以覆盖配置文件的capability参数的
  dontStopAppOnReset参数
  dontStopAppOnReset: true
  这个参数允许我们在某个页面继续执行遍历,比如我们希望App先进入到某个页面后再进行遍历,或者当一个session结束后继续下一个session的时候我们希望不要杀死App重新执行,而是继续上一次结束的页面开始执行
  ignoreUnimportantViews参数
  这个参数设置为true的时候可以忽略不重要的view,加速pageSource的加载,加快测试速度
  testcase测试用例
  用于启动APP后的基础测试用例
  完整形态
  given: 先决条件,只有条件成立的时候才完成后面的操作
  when: 对什么事件做什么事情
  then: 断言集合,事件结束后对结果断言testcase:   name: "TesterHome AppCrawler"   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)      then:       - //*[contains(@text, "登录")]
  简写形态
  直接使用 xpath  对应 when  里面的 xpath
  直接使用 action  对应 when  里面的 action  - xpath: 元素定位路径   action: click   then:   - //*[contains(@text, "登录")]
  action的动作支持
  "" :只是截图记录
  back:后退(android有back,ios的back需要给"返回按钮"的元素定位才可以使用)
  backApp:回退到当前的App,默认等价于back行为 可定制
  monkey:随机事件
  xxx()执行代码:
  Thread.sleep(1000)
  driver.swipe(0.9,0.8,0.9,0.5)
  click:点击事件
  longTap:长按
  除以上所有行为外均视为输入行为
  定位模式除了可以使用 xpath 之外还可以使用正则和包含关系
  正则
  使用 ^  开头的就认定为正则, ^确定$  , ^.*输入密码
  包含
  可以使用元素其中包含的内容进行定位;  密码  , 输入
  selectedList:制定遍历控件
  定义了哪些控件要被遍历到
  这里如果想设置让其点击所有可点击的 TextView  和 ImageView  控件,修改完成如下: selectedList: - xpath: //android.widget.ImageView[@clickable="true"] - xpath: //*[@clickable="true" and contains(@class,"Text")]
  firstList::优先遍历
  哪些控件被优先遍历
  lastList:最后遍历
  哪些控件被最后遍历
  backBatton:返回按钮
  返回的时候点击哪个按钮(ios需要)
  blackList:黑名单
  用在不想让它变里的元素上
  比如:相机、忘记密码、支付等
  tagLimitMax:全局设置
  同类型的最多点击的次数;这里设置为2次
  tagLimit: 自定义控件类型的点击次数
  这里设置对于 ListView  类型的只点击一次
  maxDepth: 遍历的最大深度
  triggerActions:触发器,特定条件触发执行动作的设置(触发规则)广告、升级弹框在测试过程中突然出现某些动作需要输入某些动作需要特定次数的操作这样每次出现弹框都会被处理 测试中途碰到了账号密码输入框需要输入的可以提前在 triggerActions  中设置 times : 需要点击几次, 不写,表示出现了这个元素就会被点掉(比如应用在:稍后再看、关闭、取消等按钮) #点击弹窗的关闭按钮  triggerActions:  - xpath: //*[contains(@resource-id,"cancel")]    action: click    times: 1
  登录案例triggerActions: - action: "click"   xpath: "//*[@resource-id="com.xxx.test:id/login"]"   times: 1 - action: "0940xxxxxxxx"   xpath: "//*[@resource-id="com.xxx.test:id/phone_edit"]"   times: 1 - action: "123456"   xpath: "//*[@resource-id="com.xxx.test:id/pwd_edit"]"   times: 1 - action: "click"   xpath: "//*[@resource-id="com.xxx.test:id/btn_submit"]"   times: 1
  执行定制化的配置文件
  命令:java -jar crawl_launcher.jar -a apk/path -c appdemo.yaml
  测试结果如果没有使用 -o  参数指定log输出的路径, appcrawler  就会在当前目录下生成以时间为命名的文件夹,里面保存了所有的数据,文件、截图、log。 打开文件夹会发现如下,每一步都会进行截图(这也是速度变慢的原因之一吧)以及对于的 dom  文件,这里会看到有几个 steps  文件,这个只是随意点了某个操作来告知用户正在操作,真正的执行步骤是从这之后开始。 在测试log中有一个index.html文件,打开它会看到刚才运行的测试报告,appcrawler会把每一次点击当做一个测试用例,没一个页面当做是一个测试套件;将界面和界面内的控件点击模拟成了测试套件和测试用例的关系。 成功的用Succeed表示,Canceled是遍历的时候发现有这个可点击的控件,但是最后却没遍历到的控件。 在生成的文件夹中有appcrawler.log,里面记录了详细的执行步骤的log信息(加上 -vv  参数运行的话会得到更多更多的log信息)。 index  等于几就表示第几次事件, action  表示当前的操作, xpath  就表示当前操作的元素的 xpath  表达式 appcrawler  的一个基本认识,既然提到了它的定制化的特点,就需要通过配置文件来完成了。
  框架组成
  底层有个叫AccessibleServices东西,它可以获取Android所有界面的控件。uiautomator获取元素进行操作的时候,就是靠AccessibleServices去获取控件,然后去触发一定的行为,uiautomator就是将其进行了包装。基于uiautomator,appium开发了一个uiautomator server,appium走的是HTTP协议ATX开发了一个uiautomator2,maxim就处于这一层,ATX走的是JSON-RPC协议
  appcrawler处于最上层,所以appcrawler由于多了两层封装,再加上运行过程中加入了截图(可以在配置中取消,但是取消后不利于结果的查看),运行起来自然就慢了。
  遍历原则
  它的遍历原则是,找页面的里层次最深的元素,也就是处于中心位置元素会被优先遍历
  常见问题
  1、问题:运行后提示Option Unknown
  解决:建议换成最新的crawl_launcher,使用正确的Option, 查看命令:"java -jar crawl_launcher.jar_path" 。
  2、问题:运行命令后提示找不到设备,但是adb devices可以查询到设备。
  解决:数据线重新连接手机,再次允许手机权限即可解决。
  3、问题:提示crawler运行成功,但是Found 0 crashes。
  解决:使用最新版本的crawl_launcher.jar,option 换成"-a "或者"--capability "等方式启动即可解决。
  4、问题:手机已经存在最新版本的APP,运行命令使用了-a 安装旧APP版本,提示降级error 。
  解决:删除手机最新版本的APP,或者安装更新版本的APP,或者使用其他的option启动crawler。
  5、问题:启动命令执行后提示:[W3C] error: Activity name ".ApiDemos" used to start the app doesn"t exist or cannot be launched! Make sure it exists and is a launchable activity
  解决:需要修改遍历文件中的包名即可。
  6、问题:app运行比较慢,容易超时怎么办?
  解决:AppCrawler默认每次操作时会等待500ms;通过triggeraction来解决需要等待的条件,xpath为进度条,action为sleep 1s,截图操作是可关闭的。
  7、问题:tagLimit会限制同属性但不同层级的元素吗?
  解决:tagLimit限制的是相同的父节点层级,不管属性,是看布局的层级
  8、问题:如何防止遍历的时候不小心跳到别的应用?跳到别的应用后怎么回来?
  答:会自动跳转回来的。除非设置了App的白名单
  9、问题:页面需要在当前页不停滑动加载测试
  答:遍历完当前页后用afterpage参数设置滑动
  10、问题:appclawer ==>maxDepth:这个层级是如何定义的?
  答:maxDepth可以从log中看到,AppCrawler.log中有一个Stack的输出,里面默认保存的是所有activity的栈记录。
  11、 问题:Could not determine whether class ‘org.pegdown.Parser$parboiled’ has already been loaded
  解决 : java版本换成11,有些api可能被禁用了

中国女孩带爷爷游中国你陪伴爷爷奶奶出门游玩过吗?最近看了一篇文章,有一位爷爷带着已故奶奶照片到天安门合影,该视频引发网友点赞,而这段视频背后的故事,却让人感动不已。文章是这样的,有一位小姑娘叫小万,今年25岁四川自贡人,大学毕业双十一必看!开售至今两个月,那些OPPOWatch3系列用户后悔了吗?入手一款电子产品之前,先在网络上查看其口碑评价已经成为许多人的购物习惯。毕竟除了价格与配置参数之外,产品真实的表现也是用户需要关注的重点。双十一期间更应了解清楚产品口碑之后再剁手,双十一爆款预定,Note12系列看点分享,网友这下有点纠结了双十一期间,各家都准备大干一场,作为线上为主的品牌,Redmi自然不会例外,不仅仅对之前发布的产品进行了价格调整,并且推出了Note12系列产品,新品将于本月27日,也就是本周四发华为Mate40P50系列等机型开启鸿蒙HarmonyOS3正式版不限量升级华为Mate40系列P50系列等机型开启鸿蒙HarmonyOS3正式版不限量升级,华为Mate40系列MateXs2系列MateX2系列P50系列,以及华为MatePad系列HUA广州地产系列之一碧桂园前言房地产这几年变化很大,本人不准备也没能力对未来作出预测。但冷眼旁观了许多年,总想写点东西。因此准备不定期写写广州地产圈的企业,一是基于公开的信息,二是只写过去,未来留待后来人解神奇的缘分!三胞胎男孩街头偶遇三胞胎女孩四川成都两家人分别带着三胞胎男孩和三胞胎女孩在街头相遇两家都认为这是神奇的缘分视频加载中我们都觉得很惊喜,因为本来碰到三胞胎就挺难的,然后我家又都是儿子,他家又都是女儿。三胞胎男孩张继科再爆恋爱,缘何选了二婚女?曾与白百何抢男人,太乱了这几天,景甜被爆出正在拍摄电视剧灼灼风流的路透照,被网友怒赞笑容明媚光彩照人。这是她继司藤大爆之后的另一部重头戏,搭档的男演员也是一线中生冯绍峰,所以关注度自然不低。但相比事业上的3名游客擅入铜鼓岭自然保护区迷路获救,分别被罚4000元记者吴岳文10月23日8时许,海南文昌市公安局龙楼海岸派出所联合文昌市龙楼镇政府文昌消防救援部门等人员,在铜鼓岭自然保护区救出3名被困游客,并进行教育处罚。海南铜鼓岭国家级自然保护逆转大胜!利拉德318,约基奇4中3,穆雷尴尬,西蒙斯暴走创纪录北京时间2022年10月25日,今日NBA比赛,开拓者主场迎战掘金,开拓者能否延续自己的连胜呢?开拓者首发利拉德西蒙斯哈特格兰特努尔基奇,掘金首发穆雷波普波特戈登约基奇。第一节比赛明星红毯肩带意外崩断,险些走光,真是太尴尬了红毯争奇斗艳,免不了显露美腿和胸部,但走光的窘境也是许多哇。女星们在红毯上走光,或是差点儿走光的窘境,可能他们这辈子都不想感受第二次。有性感身材的张萌,在红毯穿着露脐装抹胸连衣裙大一个公共厕所竟被印度游客拍得如此华丽,印度网友表示很意外公共厕所,简称为公厕,指供城市居民和流动人口共同使用的厕所。公厕在每个城市里都是随处可见的,在大众眼里,这并不是什么稀奇的东西,但是一位印度的游客到我们国家旅游时,却把公共场所的照
每日省思无意识到停摆是人最内耗的状态你好,我是编程魔法师,欢迎来到师享空间,这个频道是关于读书心得和自我成长的频道,和我一起学习。就好比你明明醒着,可是却让自己完全没有目标感,不知道为了什么奋斗,好像对你来说,工作只建国后,毛主席共参加三场葬礼,这三人分别是谁?分量有多重?文探古论今人编辑探古论今人毛主席诗云为有牺牲多壮志,敢教日月换新天。在新中国历史弥久的革命道路上,曾有无数前人为了那个伟大的理想前赴后继。所以这一路走来,毛主席经历了太多同志们的葬富士康发布三款电动车!丑先不说,妈兜B也太魔性华为余承东的遥遥领先,蔚来李斌的比保时捷劲热火朝天的新能源,又到大佬吹牛X时间。今天轮到富士康,在湾湾举办造车发布会。发布了3款电动车ModelB两厢车ModelV电动皮卡和Mod国内成品油调价将于24日晚开启,预计实现年内第12涨我国成品油价将于24日晚开启,这是今年以来第二十轮油价调整,也是10月份最后一次油价调整,按照我国石油价格管理办法中的内容可知,油价每隔10个工作日调价一次,节假日不计入价格,且当A股猛!连续5个一字涨停!这一轮上涨周期还能持续多久?昨天大盘冲高回落,主要是量能不到8000亿,感觉有点上涨乏力的迹象。毕竟从2900多点连续反弹,这会都要3100点了,如果量能还是就8000亿,那么肯定是支撑不了的。另一方面,就是养老金统一按年龄发,50岁2000元,55岁3000元,60岁4000元行吗?今年我国养老金实现了18连涨,平均涨幅达到了4,现在国内城镇职工平均养老金大约是3000左右。不过,也有一些老年朋友高兴不起来,因为有些人养老金只有2000多元,而有些老人的养老金2023居民医保缴费开始,不使用能退费吗?值得继续缴纳吗?一年一度的城乡居民医保缴费又要开始了,和城镇职工医疗保险不一样,城乡居民医保需要一年一缴费,在集中缴费期缴费,交一年保一年。而随着我国经济的发展和社会的进步,今年城乡居民医保的标准最高一次性奖励50万元!青岛拟出台标准化创新发展资助奖励办法日前,市市场监督管理局发布青岛市标准化创新发展资助奖励办法(征求意见稿)向社会公开征集意见奖励办法提出对在本市依法设立完成符合条件的标准化创新发展项目的企业事业单位和社会团体最高给乐健康丨哪些人不适合吃素?素食人群该怎么吃?工人日报中工网记者姬薇随着人们的健康意识和养生观念增强,素食成为了人们对健康的一种选择。素食人群是指以不吃畜肉家禽海鲜蛋奶等动物性食物为饮食方式的人群。完全戒食动物性食品及其产品的VAR取消进球被判点球,莫拉塔标准何在?为何总是马竞吃亏?直播吧10月19日讯马竞在本轮西甲11遭巴列卡诺绝平,马竞前锋莫拉塔在赛后对于VAR判罚深表不满。被绝平的感受当然,这感觉很苦涩。但最重要的是,我实在搞不明白。为什么对方禁区内犯规新版首发,Adobe2023全家桶全新升级版来了!新增更多黑科技Adobe2023软件越新它的功能就越强大问题越少本期带来Adobe2023全家桶新版全套版本升级领取提示评论区随意评论关注私信关键词PS私信之后尽快联系领取过期不候!!!新版功能