使用智能构建脚本,不需编程,仅需配置模块和置参数即可实现自动化脚本。自动构建并不是简单的对api进行UI化,而是在api的基础上进一步抽象和封装了更简单、更实用的功能和模块(比如:不同品牌手机的兼容处理、点击进入页面、循环处理、遍历容器,搜索控件并循环处理、弹窗处理,广告处理等等),让使用者更专心于业务逻辑梳理。不会编程的同学可以使用自动构建功能直接实现自动化脚本;有编程经验的同学使用自动构建可以简化开发工作,提升开发效率(只需关注核心业务逻辑即可)。
一个视频看懂智能构建脚本。开始构建前,强烈建议您先点击这里了解这些内容!
// 请新建一个自动构建,然后点击"元数据",将如下元数据拷贝进去然后保存,系统会自动生成一个完整的自动构建demo。
{
"type": "root",
"children": [{
"type": "declareVar",
"var": [{
	"name": "temp",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "ret",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "view",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "viewContainer",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "item",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "index",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "data",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}, {
	"name": "text",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}]
}, {
"type": "main",
"desc": "业务逻辑入口",
"debug": false,
"params": [],
"children": [{
	"type": "launchApp",
	"desc": "启动APP",
	"debug": false,
	"packageName": "com.tencent.mm",
	"tag": "txt:发现|txt:搜索#",
	"maxStep": "30",
	"children": [{
		"type": "toast",
		"desc": "弹出框",
		"debug": false,
		"textList": ["string-微信启动成功"],
		"x": "-1",
		"y": "-1",
		"duration": "1000",
		"beforeWait": "0",
		"afterWait": "0"
	}, {
		"type": "loop",
		"desc": "循环处理",
		"class": "2",
		"debug": false,
		"minCount": "3",
		"maxCount": "3",
		"indexVarName": "index",
		"children": [{
			"type": "scroll",
			"desc": "滚动处理",
			"class": 1,
			"debug": false,
			"direction": "up",
			"tag": "",
			"family": [],
			"descendant": [],
			"widgetIndex": "0",
			"minDistance": "0.8",
			"maxDistance": "0.8",
			"minScrollCount": "1",
			"maxScrollCount": "1",
			"minDuration": "500",
			"maxDuration": "500",
			"beforeWait": "1000",
			"afterWait": "1000"
		}, {
			"type": "toast",
			"desc": "弹出框",
			"debug": false,
			"textList": ["string-滚动:", "var-index!-2"],
			"x": "-1",
			"y": "-1",
			"duration": "1000",
			"beforeWait": "0",
			"afterWait": "0"
		}]
	}, {
		"type": "toast",
		"desc": "弹出框",
		"debug": false,
		"textList": ["string-结束"],
		"x": "-1",
		"y": "-1",
		"duration": "1000",
		"beforeWait": "0",
		"afterWait": "0"
	}]
}]
}],
"desc": "根模块",
"debug": false
}                                    
									
// 请新建一个自动构建,然后点击"元数据",将如下元数据拷贝进去然后保存,系统会自动生成一个完整的自动构建demo。
{
"type": "root",
"children": [{
"type": "declareVar",
"var": [{
	"name": "temp",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "ret",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "view",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "viewContainer",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "tag",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "item",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "index",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "data",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}, {
	"name": "text",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}]
}, {
"type": "main",
"desc": "业务逻辑入口",
"debug": false,
"params": [],
"children": [{
	"type": "launchApp",
	"desc": "启动APP",
	"debug": false,
	"packageName": "com.alibaba.android.rimet",
	"tag": "txt:工作台#",
	"false": {},
	"failed": "",
	"maxStep": 30,
	"children": [{
		"type": "clickAndEnter",
		"desc": "点击进入工作台",
		"class": 1,
		"debug": false,
		"clickTag": "txt:工作台#",
		"root": "",
		"clickWidgetIndex": 0,
		"family": [],
		"descendant": [],
		"checkTag": "txt:应用中心#",
		"mode": "2",
		"false": {},
		"failed": "",
		"duration": 500,
		"maxStep": "8",
		"beforeWait": 0,
		"afterWait": 0,
		"children": [{
			"type": "clickAndEnter",
			"desc": "点击进入考勤打卡页面",
			"class": 1,
			"debug": false,
			"clickTag": "txt:考勤打卡#",
			"root": "",
			"clickWidgetIndex": "0",
			"family": [],
			"descendant": [],
			"checkTag": "txt:统计#",
			"mode": "2",
			"failed": "",
			"duration": "500",
			"maxStep": "8",
			"beforeWait": "0",
			"afterWait": "0",
			"children": [{
				"type": "click",
				"desc": "点击打开",
				"class": 1,
				"debug": false,
				"tag": "txt:上班打卡|txt:下班打卡#",
				"root": "",
				"widgetIndex": "0",
				"family": [],
				"descendant": [],
				"mode": "3",
				"failed": "",
				"maxStep": "5",
				"longClick": false,
				"random": true,
				"duration": "5000",
				"beforeWait": "0",
				"afterWait": "1000"
			}],
			"false": {}
		}]
	}]
}]
}],
"desc": "根模块",
"debug": false
}                                    
									
// 请新建一个自动构建,然后点击"元数据",将如下元数据拷贝进去然后保存,系统会自动生成一个完整的自动构建demo。
{
"type": "root",
"children": [{
"type": "declareVar",
"var": [{
	"name": "temp",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "ret",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "view",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "viewContainer",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "tag",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "item",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "index",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "data",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}, {
	"name": "text",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}]
}, {
"type": "main",
"desc": "业务逻辑入口",
"debug": false,
"params": [],
"children": [{
	"type": "launchApp",
	"desc": "启动APP",
	"debug": false,
	"packageName": "com.xunmeng.pinduoduo",
	"tag": "txt:推荐#",
	"failed": "",
	"maxStep": "30",
	"children": [{
		"type": "scroll",
		"desc": "滚动处理",
		"class": 1,
		"debug": false,
		"direction": "up",
		"tag": "",
		"family": [],
		"descendant": [],
		"widgetIndex": "0",
		"minDistance": "0.8",
		"maxDistance": "0.8",
		"minScrollCount": "2",
		"maxScrollCount": "3",
		"minDuration": "500",
		"maxDuration": "500",
		"beforeWait": "1000",
		"afterWait": "1000"
	}, {
		"type": "loop",
		"desc": "循环处理",
		"class": "2",
		"debug": false,
		"minCount": "2",
		"maxCount": "5",
		"indexVarName": "index0",
		"children": [{
			"type": "traverse",
			"desc": "遍历容器",
			"class": 1,
			"debug": false,
			"tag": "cn:android.support.v4.view.ViewPager#",
			"family": [1, 1],
			"descendant": [],
			"failed": "",
			"traverseSelf": false,
			"retryCount": "0",
			"startIndex": "0",
			"lastIndex": "0",
			"randomPickCount": "1",
			"clickable": false,
			"className": "",
			"children": [{
				"type": "clickAndEnter",
				"desc": "点击进入页面",
				"class": "2",
				"debug": false,
				"family": [],
				"descendant": [],
				"checkTag": "txt:发起拼单#",
				"mode": "2",
				"failed": "",
				"duration": "500",
				"maxStep": "5",
				"beforeWait": "0",
				"afterWait": "0",
				"target": "item",
				"children": [{
					"type": "scroll",
					"desc": "滚动处理",
					"class": 1,
					"debug": false,
					"direction": "up",
					"tag": "",
					"family": [],
					"descendant": [],
					"widgetIndex": "0",
					"minDistance": "0.8",
					"maxDistance": "0.8",
					"minScrollCount": "3",
					"maxScrollCount": "5",
					"minDuration": "500",
					"maxDuration": "500",
					"beforeWait": "1000",
					"afterWait": "3000"
				}, {
					"type": "back2Page",
					"desc": "返回页面",
					"debug": false,
					"tag": "txt:首页#",
					"root": "",
					"backFirst": "true",
					"failed": "",
					"duration": "500",
					"maxStep": "5",
					"beforeWait": "0",
					"afterWait": "0"
				}]
			}]
		}, {
			"type": "scroll",
			"desc": "滚动处理",
			"class": 1,
			"debug": false,
			"direction": "up",
			"tag": "",
			"family": [],
			"descendant": [],
			"widgetIndex": "0",
			"minDistance": "0.8",
			"maxDistance": "0.8",
			"minScrollCount": "2",
			"maxScrollCount": "3",
			"minDuration": "500",
			"maxDuration": "500",
			"beforeWait": "1000",
			"afterWait": "1000"
		}]
	}]
}]
}],
"desc": "根模块",
"debug": false
}                                    
									
// 请新建一个自动构建,然后点击"元数据",将如下元数据拷贝进去然后保存,系统会自动生成一个完整的自动构建demo。
{
"type": "root",
"children": [{
"type": "declareVar",
"var": [{
	"name": "temp",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "ret",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "view",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "viewContainer",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "tag",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "item",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "index",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "data",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}, {
	"name": "text",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}]
}, {
"type": "main",
"desc": "业务逻辑入口",
"debug": false,
"params": [],
"children": [{
	"type": "launchApp",
	"desc": "启动APP",
	"debug": false,
	"packageName": "com.ss.android.ugc.aweme",
	"tag": "txt:推荐#",
	"false": {},
	"failed": "",
	"maxStep": 30,
	"children": [{
		"type": "loop",
		"desc": "循环处理",
		"class": 1,
		"debug": false,
		"minRunTime": "1",
		"maxRunTime": "2",
		"children": [{
			"type": "sleep",
			"desc": "模拟看视频",
			"debug": false,
			"minTime": "2000",
			"maxTime": "8000"
		}, {
			"type": "click",
			"desc": "点赞",
			"class": 1,
			"debug": false,
			"tag": "txt^:未点赞#",
			"root": "",
			"widgetIndex": "0",
			"family": [],
			"descendant": [],
			"mode": "2",
			"failed": "",
			"maxStep": "5",
			"longClick": false,
			"random": true,
			"duration": "500",
			"beforeWait": "0",
			"afterWait": "2000"
		}, {
			"type": "scroll",
			"desc": "滚动处理",
			"class": 1,
			"debug": false,
			"direction": "up",
			"tag": "",
			"family": [],
			"descendant": [],
			"widgetIndex": "0",
			"minDistance": "0.98",
			"maxDistance": "0.98",
			"minScrollCount": "1",
			"maxScrollCount": "1",
			"minDuration": "500",
			"maxDuration": "500",
			"beforeWait": "1000",
			"afterWait": "1000"
		}]
	}]
}]
}],
"desc": "根模块",
"debug": false
}                                    
									
// 请新建一个自动构建,然后点击"元数据",将如下元数据拷贝进去然后保存,系统会自动生成一个完整的自动构建demo。
{
"type": "root",
"children": [{
"type": "declareVar",
"var": [{
	"name": "temp",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "ret",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "view",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "viewContainer",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "tag",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "item",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "index",
	"type": "normal",
	"initType": "null",
	"initValue": "null"
}, {
	"name": "data",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}, {
	"name": "text",
	"type": "normal",
	"initType": "string",
	"initValue": ""
}]
}, {
"type": "main",
"desc": "业务逻辑入口",
"debug": false,
"params": [],
"children": [{
	"type": "launchApp",
	"desc": "启动APP",
	"debug": false,
	"packageName": "com.ss.android.article.news",
	"tag": "txt:首页#",
	"failed": "",
	"maxStep": "30",
	"children": [{
		"type": "scroll",
		"desc": "滚动处理",
		"class": 1,
		"debug": false,
		"direction": "up",
		"tag": "",
		"family": [],
		"descendant": [],
		"widgetIndex": "0",
		"minDistance": "0.8",
		"maxDistance": "0.8",
		"minScrollCount": "2",
		"maxScrollCount": "3",
		"minDuration": "500",
		"maxDuration": "500",
		"beforeWait": "1000",
		"afterWait": "1000"
	}, {
		"type": "loop",
		"desc": "循环处理",
		"class": 1,
		"debug": false,
		"minRunTime": "1",
		"maxRunTime": "2",
		"children": [{
			"type": "traverse",
			"desc": "遍历容器",
			"class": 1,
			"debug": false,
			"tag": "cn:androidx.recyclerview.widget.RecyclerView#",
			"family": [],
			"descendant": [],
			"failed": "",
			"traverseSelf": false,
			"retryCount": "0",
			"startIndex": "0",
			"lastIndex": "0",
			"randomPickCount": "0",
			"clickable": false,
			"className": "",
			"children": [{
				"type": "if",
				"desc": "条件处理",
				"class": 1,
				"debug": false,
				"target": "item",
				"family": [1],
				"descendant": [],
				"conditions": "className@#android.widget.RelativeLayout@#",
				"children": [{
					"type": "clickAndEnter",
					"desc": "点击进入页面",
					"class": "2",
					"debug": false,
					"family": [],
					"descendant": [],
					"checkTag": "txt:分享#",
					"mode": "2",
					"false": {
						"type": "back2Page",
						"desc": "返回页面",
						"debug": false,
						"tag": "txt:首页#",
						"root": "",
						"backFirst": "false",
						"failed": "",
						"duration": "500",
						"maxStep": "5",
						"beforeWait": "0",
						"afterWait": "0"
					},
					"failed": "",
					"duration": "500",
					"maxStep": "5",
					"beforeWait": "0",
					"afterWait": "0",
					"target": "item",
					"children": [{
						"type": "scroll",
						"desc": "滚动处理",
						"class": 1,
						"debug": false,
						"direction": "up",
						"tag": "",
						"family": [],
						"descendant": [],
						"widgetIndex": "0",
						"minDistance": "0.2",
						"maxDistance": "0.5",
						"minScrollCount": "4",
						"maxScrollCount": "6",
						"minDuration": "1000",
						"maxDuration": "3000",
						"beforeWait": "1000",
						"afterWait": "1000"
					}, {
						"type": "back2Page",
						"desc": "返回页面",
						"debug": false,
						"tag": "txt:首页#",
						"root": "",
						"backFirst": "true",
						"failed": "",
						"duration": "500",
						"maxStep": "5",
						"beforeWait": "0",
						"afterWait": "0"
					}]
				}]
			}]
		}, {
			"type": "scroll",
			"desc": "滚动处理",
			"class": 1,
			"debug": false,
			"direction": "up",
			"tag": "",
			"family": [],
			"descendant": [],
			"widgetIndex": "0",
			"minDistance": "0.98",
			"maxDistance": "0.98",
			"minScrollCount": "2",
			"maxScrollCount": "3",
			"minDuration": "500",
			"maxDuration": "500",
			"beforeWait": "1000",
			"afterWait": "1000"
		}]
	}]
}]
}],
"desc": "根模块",
"debug": false
}                                    
									| 属性名 | 类型 | 说明 | 
|---|---|---|
| params | string array | 参数列表,外部传递进来的透传参数 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| packageName | string | app包名 | 
| findTag | tag | app启动后首页中出现的某个控件的tag,出现该tag就表示app启动成功 | 
| autoExit | boolean | 完成后是否自动退出app,默认为false | 
| wait | integer | 启动app后等待多长时间,默认1000,单位毫秒 | 
| false | module | 启动app失败后执行的模块,一般常用于记录错误日志 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| maxStep | integer | 最多搜索多少次tag,默认30次 | 
 
                | 属性名 | 类型 | 说明 | 
|---|---|---|
| root | var | 搜索控件时指定的root,若不为空则从root开始搜索 | 
| false | module | 调用结束时没有找到控件时执行的模块,常用于记录错误日志 | 
| failed | popup | 查找tag失败一次后调用这个模块处理,常用于处理弹窗或者广告 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| widgetIndex | integer | 挑选找到控件中的一个进行处理,-1表示挑选最后一个,0表示挑选第一个,依次类推,默认为0 | 
| maxStep | integer | 搜索tag时最大尝试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| root | var | 搜索控件时指定的root,若不为空则从root开始搜索 | 
| tag | tag | 搜索控件的tag | 
| family | array | 点击查看「视频教程」 | 
| false | module | 调用结束时没有找到控件时执行的模块,常用于记录错误日志 | 
| failed | popup | 查找tag失败一次后调用这个模块处理,常用于处理弹窗或者广告 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| maxStep | integer | 搜索tag时最大尝试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| fetchResultIndex | integer | 挑选找到控件中的一个返回,-1表示挑选最后一个,0表示挑选第一个,依次类推,默认为0 | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| tag | tag | 根控件的tag | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| maxStep | integer | 搜索tag时最大尝试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| root | var | 搜索控件时指定的root,若指定则从root开始搜索 | 
| tag | tag | 被点击控件的tag | 
| family | array | 点击查看「视频教程」 | 
| false | module | 搜索控件失败后执行的模块,通常在这里打印出错日志 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| mode | select | 点击模式,支持三种点击模式:模拟点击、控件内置点击功能、先模拟点击再使用内置点击功能。注意使用控件内置点击功能的前提是控件的clickable属性必须为true,或者其某一个祖先控件的clickable属性为true | 
| widgetIndex | integer | 挑选找到所有控件中的一个进行点击,-1表示挑选最后一个返回,0表示挑选第一个返回,依次类推,默认为0 | 
| longClick | boolean | 是否长按 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| maxStep | integer | 当搜索tag失败时重试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认1000,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| target | var | 被点击控件 | 
| family | array | 点击查看「视频教程」 | 
| false | module | 执行失败后执行的模块,通常在这里打印出错日志。 | 
| mode | select | 点击模式,支持三种点击模式:模拟点击、控件内置点击功能、先模拟点击再使用内置点击功能。注意使用控件内置点击功能的前提是控件的clickable属性必须为true,或者其某一个祖先控件的clickable属性为true | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认1000,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| x | coord | 被点击屏幕x坐标 | 
| y | coord | 被点击屏幕y坐标 | 
| unit | string | unit表示坐标的单位,默认为像素(px),可以取dp,percent,px,详见这里。 | 
| false | module | 执行失败后执行的模块,通常在这里打印出错日志。 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认1000,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| mode | integer | 1表示无障碍,2表示蓝牙,3表示usb,4表示root,5表示adb | 
| minX | float | 最小x,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| maxX | float | 最大x,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| minY | float | 最小y,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| maxY | float | 最大y,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| duration | integer | 完成点击的时间,单位毫秒 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认1000,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| root | var | 搜索控件时指定的root,若指定则从root开始搜索 | 
| clickTag | tag | 被点击控件的tag | 
| family | array | 点击查看「视频教程」 | 
| checkTag | tag | 进入另一个页面后的控件tag,若出现该tag则表示进入页面成功 | 
| clickWidgetIndex | integer | 挑选找到控件中的一个进行操作,-1表示挑选最后一个返回,0表示挑选第一个返回,依次类推 | 
| mode | select | 点击模式,支持三种点击模式:模拟点击、控件内置点击功能、先模拟点击再使用内置点击功能。注意使用控件内置点击功能的前提是控件的clickable属性必须为true,或者其某一个祖先控件的clickable属性为true | 
| false | module | 执行失败后执行的模块,通常在这里打印出错日志。 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| maxStep | integer | 当搜索tag失败时重试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| target | var | 被点击控件变量 | 
| family | array | 点击查看「视频教程」 | 
| checkTag | tag | 进入另一个页面后的控件tag,若出现该tag则表示进入页面成功 | 
| mode | select | 点击模式,支持三种点击模式:模拟点击、控件内置点击功能、先模拟点击再使用内置点击功能。注意使用控件内置点击功能的前提是控件的clickable属性必须为true,或者其某一个祖先控件的clickable属性为true | 
| false | module | 搜索控件失败后执行的模块,通常这里打印出错日志。 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| maxStep | integer | 当搜索tag失败时重试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| root | var | 搜索控件时指定的root,若不为空则从root开始搜索 | 
| tag | tag | 返回页面中的某个控件tag,出现该tag表示已经成功返回该页面了 | 
| backFirst | boolean | 是否先按返回键再判断是否返回指定页面,默认true | 
| false | module | 执行失败后执行的模块,通常在这里打印出错日志。 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| duration | integer | 两次搜索间隔时间,单位毫秒 | 
| maxStep | integer | 一趟搜索中最大尝试次数。 | 
| beforeWait | integer | 执行前等待时间,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| tag | tag | 若找到tag对应的控件则滚动该控件,否则滚动屏幕 | 
| family | array | 点击查看「视频教程」 | 
| widgetIndex | integer | 挑选找到控件中的一个进行操作,-1表示挑选最后一个返回,0表示挑选第一个返回,依次类推,默认为0 | 
| direction | string | 取值:向上滚动、向下滚动、向左滚动、向右滚动 | 
| minScrollDistance | float | 最小滚动距离,取值范围[0-1],1表示整个控件高度(左右滚动时为宽度),默认0.8 | 
| maxScrollDistance | float | 最大滚动距离,取值范围[0-1],默认0.8。若minScrollDistance不等于maxScrollDistance,则系统取[minScrollDistance, maxScrollDistance]间的一个随机值 | 
| minDuration | integer | 滚动一次最小时间,默认500,单位毫秒 | 
| maxDuration | integer | 滚动一次最长时间,默认500,单位毫秒。若minDuration不等于maxDuration,则系统取[minDuration, maxDuration]间随机值 | 
| beforeWait | integer | 执行前等待时间,默认1000,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认1000,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| direction | string | 取值:向上滚动、向下滚动 | 
| beforeWait | integer | 执行前等待时间,默认1000,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认1000,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| mode | integer | 1表示无障碍,2表示蓝牙,3表示usb,4表示root,5表示adb | 
| minDuration | integer | 滚动一次最小时间,默认500,单位毫秒 | 
| maxDuration | integer | 滚动一次最长时间,默认500,单位毫秒。若minDuration不等于maxDuration,则系统取[minDuration, maxDuration]间随机值 | 
| minStartX | float | 起始点最小x,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| maxStartX | float | 起始点最大x,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| minStartY | float | 起始点最小y,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| maxStartY | float | 起始点最大y,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| minEndX | float | 结束点最小x,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| maxEndX | float | 结束点最大x,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| minEndY | float | 结束点最小y,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| maxEndY | float | 结束点最大y,若取值在[0, 1]之间表示比例,例:0.5表示中点;若取值大于1表示像素值 | 
| beforeWait | integer | 执行前等待时间,默认1000,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认1000,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| mode | integer | 1表示无障碍,2表示蓝牙,3表示usb,4表示root,5表示adb | 
| count | integer | 按count次返回键,默认1 | 
| duration | integer | 两次按键间隔时间,默认1000,单位毫秒 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0, 单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| minRunTime | float | 最小运行时长,默认1,单位分 | 
| maxRunTime | float | 最长运行时长,默认1,单位分。若minRunTime不等于maxRunTime,则实际运行时间取[minRunTime,maxRunTime]间的随机值 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| minCount | integer | 最少运行次数,默认1 | 
| maxCount | integer | 最大运行次数,默认1。minCount不等于maxCount,则实际运行次数取[minCount,maxCount]间的随机值 | 
| indexVarName | string | 每次循环索引变量名,默认为index。当次数循环嵌套次数循环时,相同的index有可能导致循环错乱,出错时建议更改indexVarName值。 | 
| 属性名 | 类型 | 说明 | 
|---|
| 属性名 | 类型 | 说明 | 
|---|
| 属性名 | 类型 | 说明 | 
|---|---|---|
| breakTag | tag | 找到该tag就跳出循环 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| expr | string | 条件表达式 | 
 
                    | 属性名 | 类型 | 说明 | 
|---|---|---|
| tag | tag | 被搜索容器的tag | 
| family | array | 点击查看「视频教程」 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| retryCount | integer | 当搜索容器失败后,刷新下界面再次重试的次数,默认0 | 
| startIndex | integer | 从容器的第几个孩子开始遍历 取值>=0,0表示第一个孩子依次类推,默认0 | 
| lastIndex | integer | 从容器的倒数第几个孩子停止遍历 取值>=0,0表示最后一个孩子依次类推,默认0 | 
| randomPickCount | integer | 默认为0,0表示直接按顺序访问所有有效子控件,>0表示随机取randomPickCount个子控件,<0表示在所有效子控件中随机取随机个子控件 | 
| clickable | boolean | 是否仅处理可点击的子控件,默认false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| target | var | 被遍历的容器变量 | 
| family | array | 点击查看「视频教程」 | 
| startIndex | integer | 从容器的第几个孩子开始遍历 取值>=0,0表示第一个孩子依次类推,默认0 | 
| lastIndex | integer | 从容器的倒数第几个孩子停止遍历 取值>=0,0表示最后一个孩子依次类推,默认0 | 
| randomPickCount | integer | 默认为0,0表示直接按顺序访问所有有效子控件,>0表示随机取randomPickCount个子控件,<0表示在所有效子控件中随机取随机个子控件 | 
| clickable | boolean | 是否仅处理可点击的子控件,默认false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| prob | integer | 取之[0-100],100表示100%概率,0表示0%概率 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| logType | integer | 日志类型,取值:log,error,warning,info | 
| info | value array | 系统会自动把数组中的所有值按顺序连接起来,然后打印出来。 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| textList | value array | 系统会自动把数组中的所有值按顺序连接起来,然后通过toast显示出来。 | 
| x | integer | x坐标,单位像素,默认-1 | 
| y | integer | y坐标,单位像素,默认-1 | 
| duration | integer | 持续多长时间,单位毫秒,默认1000 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| minTime | integer | 最短延时时间,默认1000,单位毫秒 | 
| maxTime | integer | 最长延时时间,默认1000,单位毫秒,若minTime不等于maxTime,则取[minTime,maxTime]间的随机值 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| appName | string | 刷新后切换到该app上运行,注意该app必须是「冰狐智能辅助」启动的app | 
| packageName | string | 刷新后切换到该app上运行,注意该app必须是「冰狐智能辅助」启动的app | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| mode | int | 1表示无障碍,2表示蓝牙,3表示usb,4表示root,5表示adb | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| mode | int | 1表示无障碍,2表示蓝牙,3表示usb,4表示root,5表示adb | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| text | string | 文本 | 
| action | string | 输入动作,比如输入文本后,输入search命令来执行搜索操作等。支持done,search,send,go,next,previous等 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| root | var | 搜索控件时指定的root,若不为空则从root开始搜索 | 
| data | value | 待粘贴的数据 | 
| tag | tag | 控件tag | 
| family | array | 点击查看「视频教程」 | 
| mode | string | 粘贴模式,取值:set,paste | 
| widgetIndex | integer | 挑选找到控件中的一个进行操作,-1表示挑选最后一个返回,0表示挑选第一个返回,依次类推,默认为0 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| maxStep | integer | 一趟搜索中最大尝试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| target | var | 控件变量 | 
| family | array | 点击查看「视频教程」 | 
| data | value | 待粘贴的数据 | 
| mode | string | 粘贴模式,取值:set,paste | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| root | var | 搜索控件时指定的root,若不为空则从root开始搜索 | 
| tag | tag | 控件tag | 
| family | array | 点击查看「视频教程」 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| maxStep | integer | 一趟搜索中最大尝试次数,默认5次 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| target | var | 控件变量 | 
| family | array | 点击查看「视频教程」 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| serviceName | string | 服务名称 | 
| separator | string | 多个数据的分隔符,默认:# | 
| returnJsonData | boolean | 是否返回json数据,默认值:false | 
| returnVarName | string | 存放返回值的变量,默认值:data | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| fetchResultIndex | integer | 如果结果为数组,则-2表示直接返回结果,-1表示随机选择一个数据,0表示获取第一个数据,若指定index超过实际数据大小,则取最后一个数据。默认为-2 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| serviceName | string | 服务名称 | 
| separator | string | 多个数据的分隔符,默认:# | 
| item | value array | 系统会自动把数组中的所有值按顺序连接起来组成item。 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| root | var | 搜索控件时指定的root,若不为空则从root开始搜索 | 
| retryCount | integer | 搜索一趟失败后,最多再重新搜索几趟,默认为0,一般不需要修改 | 
| false | module | 执行一趟失败后执行的模块,通常在这里滚动屏幕以便于继续搜索其他控件 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| maxStep | integer | 一趟搜索中最大尝试次数,默认8 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| target | var | 控件变量 | 
| family | array | 点击查看「视频教程」 | 
| conditions | condition | 所有条件逻辑与(&&),控件相关的条件处理,比如尺寸、文本、类名、子控件数、是否可点击、是否被选中等 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| expr | string | 表达式 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| data | var | 被操作的变量,注意变量值要为json数据 | 
| operate | array | 对json数据的操作,支持数组操作和属性操作。 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| name | string | 脚本名 | 
| exportModuleNames | string list | 导出模块 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| name | string | 脚本名 | 
| params | value array | 系统会自动把数组中的所有值按顺序传递给微服务 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:true | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| serviceName | string | 服务名 | 
| params | value array | 系统会自动把数组中的所有值按顺序传递给微服务 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:true | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| target | var | 字符串变量 | 
| name | string | 函数名 | 
| params | value array | 系统会自动把数组中的所有值按顺序传递给函数 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:true | 
| fetchResultIndex | integer | 若返回值为数组,则挑选其中和一个值返回,-2表示不挑选,-1表示挑选最后一个返回,0表示挑选第一个返回,依次类推 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| target | var | 数组变量 | 
| name | string | 函数名 | 
| params | value array | 系统会自动把数组中的所有值按顺序传递给函数 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:true | 
| fetchResultIndex | integer | 若返回值为数组,挑选其中和一个值返回,-2表示不挑选,-1表示挑选最后一个返回,0表示挑选第一个返回,依次类推 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| name | string | 函数名 | 
| params | value array | 系统会自动把数组中的所有值按顺序传递给函数 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:true | 
| fetchResultIndex | integer | 若返回值为数组,挑选其中和一个值返回,-2表示不挑选,-1表示挑选最后一个返回,0表示挑选第一个返回,依次类推 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| nameList | array | 脚本名数组 | 
| random | boolean | 是否随机挑选脚本调用(注意:在一轮中不会重复调用);默认值:false表示顺序调用所有脚本 | 
| permanent | boolean | 是否永久执行,若为true,则一轮执行完后继续执行下一轮,直到强制退出任务为止;默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| name | string | 自定义模块名 | 
| params | value array | 系统会自动把数组中的所有值按顺序传递给模块 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| name | string | 模块名 | 
| params | string array | 参数列表 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| returnValue | value | 返回值 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| url | string | 网络url | 
| headers | object | 请求头 | 
| returnVarName | var | 返回值存放变量,默认为ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| url | string | 网络url | 
| data | string/object | 数据 | 
| headers | object | 请求头 | 
| returnVarName | var | 返回值存放变量,默认为ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| code | string | js代码 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| path | value | 音频路径,例:/sdcard/sample.mp3,https://afn.com/sample.mp3 | 
| 属性名 | 类型 | 说明 | 
|---|
| 属性名 | 类型 | 说明 | 
|---|---|---|
| cord | string | 偶数个点的坐标(浮点型),依次顺序排列:x1,y1,x2,y2... | 
| unit | string | 表示坐标的单位,默认为像素(px),可以取dp,percent,px,控件的尺寸(px单位)可以在UI树中获取;dp为设备无关单位,换算公式为:px=dp*rsDensity;percent,取[0-1],表示为屏幕宽或高成比例,换算公式:宽(px)=rsScreenWidth*x,高(px)=rsScreenHeight*y | 
| duration | integer | 表示多长时间完成手势操作,单位:毫秒 | 
| beforeWait | integer | 执行前等待时间,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| content | string | 内容 | 
| fileName | string | 文件名,若为相对目录则存储在sdcard目录下 | 
| append | boolean | 是否在文件末尾追加,默认为false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| x | integer | x坐标,像素值,-1表示取中点值 | 
| y | integer | y坐标,像素值,-1表示取中点值 | 
| confirmPermissionTag | string | 确认权限控件的tag,用于自动确认权限 | 
| root | var | 搜索控件时指定的root,若不为空则从root开始搜索 | 
| tag | tag | 控件tag | 
| family | array | 点击查看「视频教程」 | 
| widgetIndex | integer | 挑选找到控件中的一个进行操作,-1表示挑选最后一个返回,0表示挑选第一个返回,依次类推,默认为0 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| maxStep | integer | 一趟搜索中最大尝试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| target | NodeObject | 目标控件对象 | 
| x | integer | x坐标,像素值,-1表示取中点值 | 
| y | integer | y坐标,像素值,-1表示取中点值 | 
| confirmPermissionTag | string | 确认权限控件的tag,用于自动确认权限 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| x | integer | x坐标,像素值 | 
| y | integer | y坐标,像素值 | 
| confirmPermissionTag | string | 确认权限控件的tag,用于自动确认权限 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| fileName | string | 为空或者文件名。当为空时直接返回截图bitmap, 为文件名时表示截图存放的文件名,默认存放的路径在手机扩展存储目录(一般为sdcard,注意不同的手机存储目录可能不同)下的aznfz目录下,支持png和jpg后缀; | 
| destPath | string | 图片存放的目标文件夹,相对手机扩展存储目录 | 
| left | float | 截图区域的left,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| top | float | 截图区域的top,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| width | float | 截图区域的width,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| height | float | 截图区域的height,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| quality | integer | 图片质量取值范围0-100,默认值100 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| color | string | 颜色,字符串格式为#AARRGGBB或者#RRGGBB | 
| left | float | 识别区域的left,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| top | float | 识别区域的top,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| width | float | 识别区域的width,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| height | float | 识别区域的height,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| findAll | boolean | 表示是否查找所有符合条件的点,默认值:false | 
| similarity | float | 表示颜色相似度,默认为0.9,1表示完全匹配,取值范围[0-1] | 
| neighbor | string | 表示对目标点的相邻点的颜色要求,偏移值为相对目标color坐标的偏移,可以为负值,比如:[[offsetX1, offsetY1, color1], [offsetX2, offsetY2, color2]]}。注意:可以去冰狐官网「远程控制」中,选中颜色,最后点击「neighbor」自动生成neighbor | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| colors | array | 这里为颜色数组,比如:[[12, 100, '#ff00cc'],[13, 102, 23456]],内部的数组值依次表示x,y和目标颜色值,注意支持同时比较多个颜色值。颜色支持整型值和字符串,字符串格式为#AARRGGBB或者#RRGGBB。注意:可以去冰狐官网「远程控制」中,选中颜色,最后点击「colors」自动生成colors | 
| similarity | float | 表示颜色相似度,默认为0.9,1表示完全匹配,取值范围[0-1] | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| imageFileName | string | 图像的文件名,支持手机sdcard路径和app资源文件,比如:asset:logo.png | 
| left | float | 识别区域的left,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| top | float | 识别区域的top,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| width | float | 识别区域的width,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| height | float | 识别区域的height,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| click | boolean | 找图成功后是否点击该图片,默认值:false | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| left | float | 识别区域的left,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| top | float | 识别区域的top,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| width | float | 识别区域的width,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| height | float | 识别区域的height,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| awesomeThreshold | float | threshold取值范围[0.5, 0.9]。 | 
| awesomeCount | integer | count取值范围[2, 6]。 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| tag | tag | 被点击控件的tag | 
| clickMode | integer | 点击模式,1表示无障碍,2表示蓝牙,3表示usb,4表示root,5表示adb | 
| left | float | 识别区域的left,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| top | float | 识别区域的top,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| width | float | 识别区域的width,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| height | float | 识别区域的height,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| awesomeThreshold | float | threshold取值范围[0.5, 0.9]。 | 
| awesomeCount | integer | count取值范围[2, 6]。 | 
| timeout | integer | ocr的超时时间,默认1000。 | 
| random | boolean | 是否随机点击,默认false。 | 
| false | module | 搜索控件失败后执行的模块,通常在这里打印出错日志 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| maxStep | integer | 当搜索tag失败时重试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认1000,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| clickTag | tag | 被点击控件的tag | 
| checkTag | tag | 目标页面的tag | 
| clickMode | integer | 点击模式,1表示无障碍,2表示蓝牙,3表示usb,4表示root,5表示adb | 
| clickLeft | float | 识别区域的left,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| clickTop | float | 识别区域的top,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| clickWidth | float | 识别区域的width,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| clickHeight | float | 识别区域的height,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| clickAwesomeThreshold | float | threshold取值范围[0.5, 0.9]。 | 
| clickAwesomeCount | integer | count取值范围[2, 6]。 | 
| checkLeft | float | 识别区域的left,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| checkTop | float | 识别区域的top,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| checkWidth | float | 识别区域的width,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| checkHeight | float | 识别区域的height,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| checkAwesomeThreshold | float | threshold取值范围[0.5, 0.9]。 | 
| checkAwesomeCount | integer | count取值范围[2, 6]。 | 
| maxCheckStep | integer | 表示一次搜索时最多检查几次目标tag,默认为1。 | 
| timeout | integer | ocr的超时时间,默认1000毫秒。 | 
| false | module | 执行失败后执行的模块,通常在这里打印出错日志。 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| duration | integer | 两次搜索间隔时间,默认500,单位毫秒 | 
| maxStep | integer | 当搜索tag失败时重试次数,默认5次 | 
| beforeWait | integer | 执行前等待时间,默认0,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,默认0,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| tag | tag | 返回页面中的某个控件tag,出现该tag表示已经成功返回该页面了 | 
| midTag | tag | 表示在返回目标页面过程中的中间页面上的唯一tag | 
| backMode | integer | 返回键模式,1表示无障碍,2表示蓝牙,3表示usb,4表示root,5表示adb | 
| left | float | 识别区域的left,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| top | float | 识别区域的top,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| width | float | 识别区域的width,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| height | float | 识别区域的height,若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 | 
| awesomeThreshold | float | threshold取值范围[0.5, 0.9]。 | 
| awesomeCount | integer | count取值范围[2, 6]。 | 
| timeout | integer | ocr的超时时间,默认1000。 | 
| backFirst | boolean | 是否先按返回键再判断是否返回指定页面,默认true | 
| false | module | 执行失败后执行的模块,通常在这里打印出错日志。 | 
| failed | popup | 搜索tag失败一次后调用这个模块,一般常用于处理弹窗或者广告 | 
| duration | integer | 两次搜索间隔时间,单位毫秒 | 
| maxCheckStep | integer | 表示一次搜索时最多检查几次目标tag,默认值2。 | 
| maxStep | integer | 一趟搜索中最大尝试次数,默认值5。 | 
| beforeWait | integer | 执行前等待时间,单位毫秒 | 
| afterWait | integer | 执行完成后等待时间,单位毫秒 | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| serviceUUID | string | 服务的uuid | 
| characteristicUUID | string | characteristic的UUID | 
| name | string | 设备名,可以为部分设备名,比如设备名的前缀等。默认为空 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| data | string | 数据 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| data | string | 数据 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| modelName | string | 模型名字,可以带路径,注意不要加后缀名。支持全路径、相对路径和资源文件。文件全路径,比如:/sdcard/model_name。相对路径,是相对手机外部存储目录,比如:model_name,该文件存储在手机外部存储目录下。资源路径,打包时把文件添加到apk,使用asset:来访问,比如:asset:model_name | 
| category | string | 训练模式时,训练的目标类别名数组,比如:苹果#橘子,注意顺序,多个类别之间用#分割 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|---|---|
| probThreshold | float | 概率阈值,低于了这个阈值不返回。默认为0.45 | 
| nmsThreshold | float | nms阈值,低于了这个阈值不返回。默认为0.65 | 
| returnVarName | string | 存放返回值的变量,默认值:ret | 
| returnVarIsLocal | boolean | 存放返回值变量是否仅在当前层有效,默认值:false | 
| 属性名 | 类型 | 说明 | 
|---|
| 变量名 | 类型 | 说明 | 
|---|---|---|
| ret | 普通变量 | 默认用于存放模块返回值,例:var ret = findView('txt:讲解'); | 
| view | 普通变量 | 默认用于存放控件变量,例:var ret = findView('txt:讲解');view=ret.views[0]; | 
| viewContainer | 普通变量 | 默认用于存放控件容器,例:var ret = findView('txt:讲解');viewContainer=ret.views; | 
| item | 普通变量 | 默认用于存放遍历容器时的孩子,例:var ret = findView('txt:讲解');for(var item of ret.views){}; | 
 上图为升级对话框,通过文本tag:监测到更新,判断是否出现升级对话框,若出现则点击"以后再说",处理项为[监测到更新, 点击]
                    上图为升级对话框,通过文本tag:监测到更新,判断是否出现升级对话框,若出现则点击"以后再说",处理项为[监测到更新, 点击]
                    | 属性名 | 类型 | 说明 | 
|---|---|---|
| name | string | 函数名,弹出处理模块最后会被编译成一个函数供其他模块调用 | 
| false | array | 弹窗处理数组,当前弹窗处理模块不能处理弹窗时,依次调用数组中的模块处理(可以包含弹窗处理和广告处理),直到成功处理为止 例:当前弹窗处理模块在执行过程中就有可能处理不了所有的弹窗,此时即有可能出现对话框也有可能出现广告,所以需要把其他的弹窗处理模块和广告处理模块放到array参数里,如果弹窗处理或广告处理有一个能处理,则执行成功   | 
 
                     
                | 属性名 | 类型 | 说明 | 
|---|---|---|
| enterWindowClassName | array | 广告窗口类名数组。当出现其中一个窗口时表示进入广告了 | 
| enterTags | array | 广告窗口某个控件的tag数组。出现其中一个tag,表示进入广告了 | 
| breakTags | array | 退出广告后的显示窗口控件的tag数组。出现其中一个tag,表示退出广告了 | 
 
                     
                | 属性名 | 类型 | 说明 | 
|---|---|---|
| packageName | string | 仅处理指定包名app的通知 | 
| stopMainTaskBeforeStart | boolean | 运行前是否停止主业务逻辑处理 | 
| exeDefaultTaskWhenFinished | boolean | 结束时是否启动默认任务 |