使用自动构建,不需编程,仅需配置模块和置参数即可实现自动化脚本。自动构建并不是简单的对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,单位毫秒 |
属性名 | 类型 | 说明 |
---|---|---|
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,单位毫秒 |
属性名 | 类型 | 说明 |
---|---|---|
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,单位毫秒 |
属性名 | 类型 | 说明 |
---|---|---|
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 |
属性名 | 类型 | 说明 |
---|---|---|
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表示像素值。 |
text | string | 若识别到该文本则点击该文本。可以用|分割多个文本,比如:你好|*:搜索 表示找到“你好”或者找到包含“搜索”的文本就点击。注意:仅支持*其他的不支持,不要多加空格。 |
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){}; |
属性名 | 类型 | 说明 |
---|---|---|
name | string | 函数名,弹出处理模块最后会被编译成一个函数供其他模块调用 |
false | array | 弹窗处理数组,当前弹窗处理模块不能处理弹窗时,依次调用数组中的模块处理(可以包含弹窗处理和广告处理),直到成功处理为止
例:当前弹窗处理模块在执行过程中就有可能处理不了所有的弹窗,此时即有可能出现对话框也有可能出现广告,所以需要把其他的弹窗处理模块和广告处理模块放到array参数里,如果弹窗处理或广告处理有一个能处理,则执行成功 |
属性名 | 类型 | 说明 |
---|---|---|
enterWindowClassName | array | 广告窗口类名数组。当出现其中一个窗口时表示进入广告了 |
enterTags | array | 广告窗口某个控件的tag数组。出现其中一个tag,表示进入广告了 |
breakTags | array | 退出广告后的显示窗口控件的tag数组。出现其中一个tag,表示退出广告了 |
属性名 | 类型 | 说明 |
---|---|---|
packageName | string | 仅处理指定包名app的通知 |
stopMainTaskBeforeStart | boolean | 运行前是否停止主业务逻辑处理 |
exeDefaultTaskWhenFinished | boolean | 结束时是否启动默认任务 |