AppCrawler自动化遍历使用详解(版本2.1.0 )(转)


---
logLevel: "TRACE"
reportTitle: "Jingdata" #指生成的HTML(index.html)报告头部显示的标题信息
saveScreen: true
screenshotTimeout: 20
currentDriver: "android"
showCancel: true
tagLimitMax: 5
tagLimit:
- xpath: //*[../*[@selected='true']]
count: 12
maxTime: 10800
resultDir: "" #结果文件夹名,给定后,将不动态命名
capability:
newCommandTimeout: 120
launchTimeout: 120000
platformVersion: ""
platformName: "Android"
autoWebview: "false"
autoLaunch: "true"
noReset: "true"
androidInstallTimeout: 180000
androidCapability:
deviceName: ""
appPackage: "com.android36kr.investment"
appActivity: "" #写不写无所谓,因为APP会自动判别当前的activity是否正确,是不是launchActivity,如果不是则会报错
dontStopAppOnReset: true
app: ""
appium: "http://127.0.0.1:4723/wd/hub"
# automationName: uiautomator2
automationName: uiautomator2
reuse: 3
headFirst: true
enterWebView: true
urlBlackList:
- //*[contains(@resource-id, "tv_setting_logout") and @clickable='true'] #登出
- //*[contains(@resource-id, "toolbar_close") and @clickable='true'] # 关闭按钮,否则会陷入死循环一直遍历同一个页面
- //*[contains(@resource-id, "login_36kr_forgot_pass") and @clickable='true'] # 忘记密码,避免登陆时按照遍历顺序影响登陆
- //*[contains(@resource-id, "mine_info_icon") and @clickable='true] # 我的资料 头像部分设置不可点击(每次一运行到这里就结束了)
- //*[contains(@resource-id, "tv_name") and @clickable='true] #头部卡片 姓名
- //*[contains(@resource-id, "tv_company_name") and @clickable='true] # 头部卡片 公司和职位
- //*[contains(@resource-id, "company_avatar") and @clickable='true] # 头部 禁止进入我的资料页面
- //*[contains(@resource-id, "chat_invest_card_rl") and @clickable='true] # 聊天页的项目头部,避免又进入详情页,跳出了循环
- //*[contains(@resource-id, "chat_send_contact_ll") and @clickable='true] #聊天详情页,交换名片,避免遍历线上包时与线上用户交互
- //*[contains(@resource-id, "ll_header") and @clickable='true] # 我的资料头像部分的整个头部区域,因为一点击头像后唤起照相就不运行了
urlWhiteList:
- //*[contains(@resource-id, "login_36kr_ll") and @clickable='true'] #必须遍历账号密码登录的按钮(以此方式才能登录成功)
- //*[contains(@resource-id, "fl_msg") and @clickable='true'] #右上角的私信按钮
- //*[contains(@resource-id, "iv_setting") and @clickable='true'] # 左上角的设置按钮
backButton:
- //*[contains(@resource-id, "toolbar_back") and @clickable='true']
triggerActions: # 主要解决登录的问题,当遇到登录输入框时,输入内容,比testcase更好用
- action: "1771019****"
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: 1
- action: "click"
xpath: "//*[@resource-id='com.android36kr.investment:id/login_36kr_go_btn']"
times: 1
- action: "swipe("down")"
xpath: "//*[@resource-id='com.android36kr.investment:id/share']"
times: 1
startupActions:
- swipe("left") - println(driver)
testcase:
name: swipeTest
steps:
- when:
xpath: //*[contains(@resource-id, 'share')]
action: driver.swipe(0.5,0.8,0.5,0.2)
then: []


1、java -jar appcrawler-2.1.0.jar --capability appPackage=xxxxxx,appActivity=xxxxxx
2、appium --session-override:4:10,配置文件说明:11:00(看视频主要地方)
3、配置文件使用:true和false是开启和关闭的意思
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, 用来在遍历时候指定初始状态和遍历深度

四. 遇到的问题有哪些?如何解决
AppCrawler自动化遍历使用详解(版本2.1.0 )(转)的更多相关文章
- AppCrawler自动化遍历使用详解(版本2.1.0 )
AppCrawle是自动遍历的app爬虫工具,最大的特点是灵活性,实现:对整个APP的所有可点击元素进行遍历点击. 优点: 1.支持android和iOS, 支持真机和模拟器 2.可通过配置来设定 ...
- centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解
centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...
- JavaScript 各种遍历方式详解及总结
JavaScript 各种遍历方式详解 在$.each中想要终止循环,但是它没有continue或者break这样的终止方式,所以尝试使用return来进行终止,但是发现并没有跳出循环.为了搞清楚js ...
- 剑指Offer的学习笔记(C#篇)-- 平衡二叉树(二叉树后序遍历递归详解版)
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 一 . 题目分析 首先要理解一个概念:什么是平衡二叉树,如果某二叉树中任意的左右子树深度相差不超过1,那么他就是一颗平衡二叉树.如下图: 所以 ...
- web端自动化——selenium3用法详解
selenium中文学习文档链接:https://selenium-python-zh.readthedocs.io/en/latest/getting-started.html selenium3+ ...
- jenkins+ant+jmeter实现自动化集成(详解)
jenkins+ant+jmeter实现自动化集成 for window 一.jmeter 1.jmeter安装 二.ant 1.ant安装 三.ant运行 jmeter脚本 1.配置 四.jenki ...
- JavaScript 各种遍历方式详解,有你不知道的黑科技
http://segmentfault.com/a/1190000003968126 为了方便例子讲解,现有数组和json对象如下 var demoArr = ['Javascript', 'Gulp ...
- JavaScript遍历方式详解
为了方便例子讲解,现有数组和json对象如下: var demoArr = ['Javascript', 'Gulp', 'CSS3', 'Grunt', 'jQuery', 'angular']; ...
- JavaScript 各种遍历方式详解
为了方便例子讲解,现有数组和json对象如下 var demoArr = ['Javascript', 'Gulp', 'CSS3', 'Grunt', 'jQuery', 'angular']; v ...
随机推荐
- 洛谷 - UVA11346 - 概率 Probability - 积分
要是没学过高等数学的积分怎么办呢?可以求助于自适应辛普森法. 容易发现其实这个图形是对称的,我们只要求第一象限就可以了,第一象限如上图. 由于取点是在面积内等概率的,由高中的几何概型可知,所求概率为: ...
- 51nod1640(kruscal)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1640 题意:中文题诶- 思路:kruscal 题目要求是在边权 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:9. 自定义委托事件方法
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- UIWebView 使用
UIWebView是iOS sdk中一个最常用的控件.是内置的浏览器控件,我们可以用它来浏览网页.打开文档等等.这篇文章我将使用这个控件,做一个简易的浏览器.如下图: 我们创建一个Window-bas ...
- GitHub使用方法(初级)
[初识Github] Git 是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目 ...
- ADO winform登录
做一个程序,首先应该从登录,注册.以及增,删,改查开始,本页分享一下程序的登录 登录我们首先要有数据,所以要连接数据库,从数据库中获取我们用户的账号及密码.连接 数据库的代码:创建连接:SqlConn ...
- iOS 7:漫谈#define 宏定义(转)
iOS :漫谈#define 宏定义 #define宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步 ...
- PostgreSQL - 怎么转换数据类型
前言 对于select 233;这个sql,得到的结果是int4类型,如果我们希望将结果转换成其他的数据类型,有以下方法(下边的{数据类型}表示占位符,要替换成数据库中的某一种数据类型): 方法一:使 ...
- java简单操作redis数据库
package RedisTest; import redis.clients.jedis.Jedis; public class RedisTest { private static String ...
- 解决 mac zsh 所有命令失效
上面的没啥用, 直接看分割线吧, 上面的是第一次遇到这个问题, 没有解决.. zsh: command not found: 参考: https://www.jiloc.com/43492.html ...