1. 说明

全局模块中封装的快捷事件,不用区分是无障碍模式还是代理模式

2. 点击函数

2.1. clickPoint

  • 点击坐标
  • @param x x坐标
  • @param y y坐标
  • @return {boolean|布尔型}
function main(){
    var result = clickPoint(100,100);
    if (result){
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

2.2. click

  • 点击选择器
  • @param selectors 选择器对象
  • @return {boolean|布尔型}
function main(){
    var selector = text("我是文本");
    var result = click(selector);
    if (result){
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

2.3. clickRandom

  • 随机点击选择器的任意元素
  • @param selectors 选择器对象
  • @return {boolean|布尔型}
function main(){
    var selector = text("我是文本");
    var result = clickRandom(selector);
    if (result){
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

2.4. clickRandomRect

  • 随机点击区域中的坐标
  • @param rect 区域对象
  • @return {boolean|布尔型}

function main(){
    var rect = new Rect();
    rect.left = 10;
    rect.right = 200;
    rect.top = 10;
    rect.bottom = 400;
    var result = clickRandomRect(rect);
    if (result){
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

2.5. clickCenter

  • 点击区域中的中心坐标
  • @param rect 区域对象
  • @return {boolean|布尔型}

function main(){
    var rect = new Rect();
    rect.left = 10;
    rect.right = 200;
    rect.top = 10;
    rect.bottom = 400;
    var result = clickCenter(rect);
    if (result){
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

2.6. clickText

  • 点击文本
  • @param text 文本
  • @return {boolean|布尔型}

function main(){
  var result = clickText("设置");
  if (result){
       toast("点击成功");
  } else {
    toast("点击失败");
  }
}
main();

2.7. longClick

  • 长点击选择器
  • @param selectors 选择器对象
  • @return {boolean|布尔型}

function main(){
    var selector = text("我是文本");
    var result = longClick(selector);
    if (result){
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}

main();

2.8. longClickPoint

  • 长点击坐标
  • @param x x坐标
  • @param y y坐标
  • @return {boolean|布尔型}

function main(){
    var result = longClickPoint(100,100);
    if (result){
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

3. 多点触摸

3.1. multiTouch 多点触摸

  • 多点触摸
  • 触摸参数: action :一般情况下 按下为0,弹起为1,移动为2
  • x: X坐标
  • y: Y坐标
  • pointer:设置第几个手指触摸点,分别是 1,2,3等,代表第n个手指
  • delay: 该动作延迟多少毫秒执行
  • @param touch1 第1个手指的触摸点数组,例如:[{"action":0,"x":1,"y":1,"pointer":1,"delay":20},{"action":2,"x":1,"y":1,"pointer":1,"delay":20}]
  • @param touch2 第2个手指的触摸点数组
  • @param touch3 第3个手指的触摸点数组
  • @param timeout 多点触摸执行的超时时间,单位是毫秒
  • @return boolean|布尔型
function main() {
   utils.openAppByName("抖音短视频");
   sleep(3000);
  //第一种数组式的写法
   var touch1 = [

       {"action": 0, "x": 500, "y": 1200, "pointer": 1, "delay": 1},
       {
           "action": 2,
           "x": 500,
           "y": 1100,
           "pointer": 1,
           "delay": 20
       }, {
           "action": 2,
           "x": 500,
           "y": 1000,
           "pointer": 1,
           "delay": 20
       },
       {
           "action": 1,
           "x": 1,
           "y": 1,
           "pointer": 1,
           "delay": 20
       }];


  //第二种链式调用方法
   var touch2 = MultiPoint
       .get()
       .action(0).x(500).y(1200).pointer(1).delay(1)
       .next()
       .action(2).x(500).y(1100).pointer(1).delay(1)
       .next()
       .action(2).x(500).y(1000).pointer(1).delay(1)
       .next()
       .action(2).x(500).y(900).pointer(1).delay(1)
       .next()
       .action(1).x(500).y(800).pointer(1).delay(1);
   var touch1 = MultiPoint
       .get()
       .action(0).x(300).y(1200).pointer(2).delay(1)
       .next()
       .action(2).x(300).y(1100).pointer(2).delay(1)
       .next()
       .action(2).x(300).y(1000).pointer(2).delay(1)
       .next()
       .action(2).x(300).y(900).pointer(2).delay(1)
       .next()
       .action(1).x(300).y(800).pointer(2).delay(1);
   var x = multiTouch(touch1, touch2, null, 30000);
   logd("xxs " + x);
}
main();

4. 滑动函数

4.1. swipe

  • 通过选择器滑动节点
  • @param selectors 节点选择器
  • @param endX 结束的X坐标
  • @param endY 结束的Y坐标
  • @param duration 持续时长 单位毫秒
  • @return 布尔型 true 代表成功 false 代表失败

function main(){
    var selectors = text("我是文本");
    var result = swipe(selectors,100,100,200);
    if (result){
        toast("滑动成功");
    } else {
        toast("滑动失败");
    }
}
main();

4.2. swipeToPoint

  • 从一个坐标滑动到另一个坐标
  • @param startX 起始坐标的X轴值
  • @param startY 起始坐标的Y轴值
  • @param endX 结束坐标的X轴值
  • @param endY 结束坐标的Y轴值
  • @param duration 持续时长 单位毫秒
  • @return 布尔型 true 滑动成功, false 滑动失败

function main(){
    var result = swipeToPoint(10,10,100,100,200);
    if (result){
        toast("滑动成功");
    } else {
        toast("滑动失败");
    }
}
main();

4.3. isScrollEnd

  • 是否滚动到底部了,如果查不到元素也会返回false
  • @param distance 滚动方向 UP,DOWN,LEFT,RIGHT
  • @param selectors 选择器
  • @return false 代表未滚动到位,true 代表滚动完成了

function main(){
    var selectors = clz("android.widget.ListView");
    var result = isScrollEnd("UP",selectors);
    if (result){
        toast("滚动完成");
    } else {
        toast("滚动未完成");
    }
}
main();

5. 拖动函数

5.1. drag

  • 从一个坐标到另一个坐标的拖动
  • @param startX 起始坐标的X轴值
  • @param startY 起始坐标的Y轴值
  • @param endX 结束坐标的X轴值
  • @param endY 结束坐标的Y轴值
  • @param duration 持续时长 单位毫秒
  • @return 布尔型 true 拖动成功, false 拖动失败

function main(){
    var result = drag(10,10,100,100,200);
    if (result){
        toast("拖动成功");
    } else {
        toast("拖动失败");
    }
}
main();

5.2. dragTo

  • 通过选择器拖动某个元素到目标元素
  • @param selectors 选择器 {@link S}
  • @param destObj 目标元素选择器
  • @param duration 持续时长 单位毫秒
  • @return 布尔型 true 成功 false 失败

function main(){
    var selectors = text("设置");
    var destObj = text("日历");
    var result = dragTo(selectors,destObj,200);
    if (result){
        toast("拖动成功");
    } else {
        toast("拖动失败");
    }
}
main();

5.3. dragToPoint

  • 通过选择器拖动某个元素到目标X Y 坐标
  • @param selectors 原始元素选择器
  • @param endX 目标 X 坐标
  • @param endY 目标 Y 坐标
  • @param duration 持续时长 单位毫秒
  • @return 布尔型 true 成功 false 失败

function main(){
    var selectors = text("设置");
    var result = dragToPoint(selectors,100,100,200);
    if (result){
        toast("拖动成功");
    } else {
        toast("拖动失败");
    }
}
main();

6. 输入数据

6.1. currentIsOurIme

  • 当前是否是我们的输入法
  • @return {boolean|布尔型}

function main(){
    var result = currentIsOurIme();
    if (result){
        toast("是");
    } else {
        toast("否");
    }
}
main();

6.2. inputText

  • 通过选择器输入数据
  • @param selectors 选择器
  • @param content 数据字符串
  • @return {boolean|布尔型}

function main(){
    var selectors= clz("android.widget.EditText");
    var result = inputText(selectors,"我是内容");
    if (result){
        toast("是");
    } else {
        toast("否");
    }
}
main();

6.3. imeInputText

  • 使用输入法输入内容,前提是已经设置本程序的输入法为默认输入法
  • @param selectors 选择器
  • @param content 数据字符串
  • @return {boolean|布尔型}

function main(){
    var selectors= clz("android.widget.EditText");
    var result = imeInputText(selectors,"我是内容");
    if (result){
        toast("是");
    } else {
        toast("否");
    }
}
main();

6.4. pasteText

  • 通过选择器粘贴数据
  • @param selectors 选择器
  • @param content 数据字符串
  • @return {boolean|布尔型}

function main(){
    var selectors= clz("android.widget.EditText");
    var result = pasteText(selectors,"我是内容");
    if (result){
        toast("是");
    } else {
        toast("否");
    }
}
main();

6.5. clearTextField

  • 清除文本数据
  • @param selectors 节点选择器
  • @return {boolean|布尔型}

function main(){
    var selectors= clz("android.widget.EditText");
    var result = clearTextField(selectors);
    if (result){
        toast("是");
    } else {
        toast("否");
    }
}
main();

7. 节点操作

7.1. has

  • 通过选择器判断元素是否存在
  • @param selectors 选择器
  • @return {null|布尔型}

function main(){
    var selectors = text("设置");
    var result = has(selectors);
    if (result){
        toast("存在节点");
    } else {
        toast("不存在节点");
    }
}
main();

7.2. waitExistActivity

  • 等待activity界面出现
  • @param activity 界面名称
  • @param timeout 超时时间,单位毫秒
  • @return {null|布尔型}

function main(){
    var ac = "com.ss.android.ugc.aweme.main.MainActivity";
    var result = waitExistActivity(ac,10000);
    if (result){
        toast("存在界面");
    } else {
        toast("不存在界面");
    }
}
main();

7.3. waitExistNode

  • 通过选择器判断并等待元素是否存
  • @param selectors 选择器
  • @param timeout 超时时间,单位毫秒
  • @return {null|布尔型}

function main(){
    var selectors = text("设置");
    var result = waitExistNode(selectors,10000);
    if (result){
        toast("存在节点");
    } else {
        toast("不存在节点");
    }
}
main();

7.4. getText

  • 获取选择器得到的文本数据
  • @param selectors 选择器
  • @return {字符串数组|null|字符串集合}

function main(){
    var selectors = clz("android.widget.TextView");
    var result = getText(selectors);
    toast("result:"+result);
}
main();

7.5. getNodeInfo

  • 获取节点信息
  • @param selectors 选择器
  • @param timeout 等待时间,单位是毫秒
  • @return {null|NodeInfo数组|节点信息集合}

function main(){
    var result = clz("android.widget.TextView").getNodeInfo(10*1000);
    toast("result:"+result);
}
main();

7.6. getNodeAttrs

  • 获取节点属性信息
  • @param selectors 选择器
  • @param attr 属性值,例如 text,className,更多的属性请参考NodeInfo对象属性
  • @return {null|字符串数组|Rect对象数组}

function main(){
    var selectors = clz("android.widget.TextView");
    //获取所有text属性
    var result = getNodeAttrs(selectors,"text");
    toast("result:"+result);
    //获取所有bounds属性
    result = getNodeAttrs(selectors,"bounds");
    toast("result:"+result);
}
main();

7.7. getOneNodeInfo

  • 通过选择器 获取第一个节点信息
  • @param selectors 选择器
  • @param timeout 等待时间,单位是毫秒
  • @return NodeInfo 对象或者null

function main(){
    var result = clz("android.widget.TextView").getOneNodeInfo(10*1000);
    toast("result:"+result);
    if (result){
        result.click();
    }
}
main();

7.8. setFetchNodeMode

  • 设置获取节点的模式
  • @param mode 1 是增强型, 2 是快速型,默认是增强型
  • @param fetchInvisibleNode 是否抓取隐藏的元素,默认不抓取
  • @param fetchNotImportantNode 是否抓取不重要的元素
  • @return {boolean|*}

function main(){
    var result = setFetchNodeMode(1,true,true);
    toast("result:"+result);
}
main();

7.9. dumpXml

  • 将元素节点变成XML
  • @return string string|null
function main(){
    var result = dumpXml();
    if (result){
        toast("ok");
    } else {
        toast("no");
    }
}
main();

8. 系统按键相关

8.1. home

  • 返回主页
  • @return {null|布尔型}

function main(){
    var result = home();
    if (result){
        toast("成功");
    } else {
        toast("失败");
    }
}
main();

8.2. back

  • 返回键
  • @return {null|布尔型}

function main(){
    var result = back();
    if (result){
        toast("成功");
    } else {
        toast("失败");
    }
}
main();

8.3. openNotification

  • 打开通知栏
  • @return {null|布尔型}

function main(){
    var result = openNotification();
    if (result){
        toast("成功");
    } else {
        toast("失败");
    }
}
main();

8.4. openQuickSettings

  • 打开快速设置
  • @return {null|布尔型}

function main(){
    var result = openQuickSettings();
    if (result){
        toast("成功");
    } else {
        toast("失败");
    }
}
main();

8.5. recentApps

  • 最近APP任务按键
  • @return {null|布尔型}

function main(){
    var result = recentApps();
    if (result){
        toast("成功");
    } else {
        toast("失败");
    }
}
main();

8.6. getRunningPkg

  • 取得当前运行的App包名
  • @return {字符串|null}

function main(){
    var result = getRunningPkg();
}
main();

8.7. getRunningActivity

  • 取得当前运行的Activity类名
  • @return {字符串|null}

function main(){
    var result = getRunningActivity();
}
main();

9. 通知栏

9.1. requestNotificationPermission

  • 请求监听状态栏的权限
  • @param timeout 请求权限超时时间 单位是秒
  • @return true 代表请求权限成功,false代表失败

function main(){
    var result = requestNotificationPermission(10);
    toast("是否有权限:"+result);
}
main();

9.2. hasNotificationPermission

  • 检查是否含有状态栏监听权限
  • @return true 代表请求权限成功,false代表失败

function main(){
    var result = hasNotificationPermission();
    toast("是否有权限:"+result);
}
main();

9.3. getLastNotification

  • 获取最近通知栏对象
  • @param pkg 指定包名
  • @param size 指定获取的条数
  • @return {NotificationInfo数组|null}

function main(){
    //获取微信100条通知栏记录
    var result = getLastNotification("com.tencent.mm",100);
    toast("结果:"+result);
}
main();

9.4. shotNotification

  • 将通知发射处理,相当于点击了通知栏
  • @param seqId
  • @return {boolean|布尔型}

function main(){
    //获取微信1条通知,然后进行点击
    var result = getLastNotification("com.tencent.mm",1);
    if (result!=null && result.length>0){
        var s = shotNotification(result[0].seqId);
        toast("结果:"+s);
    }   
}
main();

9.5. cancelNotification

  • 将通知进行取消操作
  • @param seqId
  • @return {boolean|布尔型}

function main(){
    //获取微信1条通知,然后进行取消
    var result = getLastNotification("com.tencent.mm",1);
    if (result!=null && result.length>0){
        var s = cancelNotification(result[0].seqId);
        toast("结果:"+s);
    }
}
main();

9.6. getLastToast

  • 获取toast数据
  • @param pkg 指定包名
  • @param size 指定获取的条数
  • @return {null|ToastInfo数组}

function main(){
    var result = getLastToast("com.tencent.mm",100);
    toast("结果:"+result);
}
main();

10. 悬浮窗日志

10.1. requestFloatViewPermission

  • 请求展示浮窗的权限
  • @param timeout 请求权限超时时间 单位是秒
  • @return true 代表请求权限成功,false代表失败

function main(){
    var result = requestFloatViewPermission(10);
    toast("是否有权限:"+result);
}
main();

10.2. hasFloatViewPermission

  • 检查是否含有浮窗权限
  • @return true 代表请求权限成功,false代表失败

function main(){
    var result = hasFloatViewPermission();
    toast("是否有权限:"+result);
}
main();

10.3. showFloatView

  • 展示浮窗(如果是开发工具调试,请先预览一下工程,然后运行脚本,避免读取不到path文件内容的情况)
  • @param params js的map对象,包含的
  • var map = {"path":"main.html","tag":"test"}; 类似这样的参数

  • 参数解析:
  • tag:字符串 悬浮窗唯一定位的标示
  • path:字符串 IEC 中的布局文件
  • title:字符串 悬浮窗标题
  • titleBg:字符串 悬浮窗背景,16进制,例如#888888,或者#88000000
  • x:整型 悬浮窗起始X坐标
  • y:整型 悬浮窗起始Y坐标
  • w:整型 悬浮窗起始宽度
  • h:整型 悬浮窗起始高度
  • @return true 代表请求权限成功,false代表失败

function main(){
var m = {
       "path": "main.html",
       "tag": "tag",
       "title": "sss",
       "titleBg": "#888888",
       "x": 10,
       "y": 10,
       "w": 100,
       "h": 200
   };
   var xd = showFloatView(m);
   logd("showFloatView " + xd);
}
main();

10.4. closeFloatView

  • 关闭浮窗
  • @param tag showFloatView 使用的tag参数,对悬浮窗唯一定位的
  • @return true 成功,false代表失败

function main(){
 var m = {
        "path": "main.html",
        "tag": "tag",
        "title": "sss",
        "titleBg": "#888888",
        "x": 10,
        "y": 10,
        "w": 100,
        "h": 200
    };
    var xd = showFloatView(m);
    logd("showFloatView " + xd);
    sleep(3000);
    closeFloatView("tag");
}
main();

10.5. closeAllFloatView

  • 关闭所有悬浮窗,但不包含日志悬浮窗
  • @return true 成功,false代表失败

function main(){
 var m = {
        "path": "main.html",
        "tag": "tag",
        "title": "sss",
        "titleBg": "#888888",
        "x": 10,
        "y": 10,
        "w": 100,
        "h": 200
    };
    var xd = showFloatView(m);
    logd("showFloatView " + xd);
    sleep(3000);
    closeAllFloatView();
}
main();

10.6. showLogWindow

  • 展示日志浮窗
  • @return true 代表请求权限成功,false代表失败

function main(){
    var result = showLogWindow();
    toast("是否展示:"+result);
}
main();

10.7. closeLogWindow

  • 关闭日志浮窗
  • @return true 代表请求权限成功,false代表失败

function main(){
     closeLogWindow();
}
main();

10.8. setLogViewSize

  • 设置日志窗口大小
  • @param w 宽度
  • @param h 高度
  • @param textSize 日志的字体大小
  • @param backgroundColor 背景颜色,例如#336699

function main(){
    setLogViewSize(500,600,14,"#FFFFFF");
}
main();

10.9. setLogText

  • 展示消息到悬浮窗日志中,颜色是白色的
  • @param msg 消息

function main(){
    var result = setLogText("开始运行..."); 
}
main();

11. 定时任务

11.1. startJob 开启定时

  • 开启一个定时脚本任务
  • @param tag 任务的唯一标示,不能为空,脚本中可以使用readConfigString("jobTaskTag")获取当前tag值,判断是那个任务过来执行的
  • @param execTime 定时时间格式: 2020-04-17 19:20:00,或者直接是秒数字,例如 3,代表3秒后
  • @param cancelBeforeRunning
  • @return 整型 jobid

function main(){
    var time="2020-04-17 09:00:00";
    //使用日期开启一个任务
    var id =startJob("task1",time,true);
    logd("job id "+id);    
    //使用秒数开启,60秒后执行一个任务
    var id2 =startJob("task2","60",true);
    logd("job id "+id2);   
}
main();

11.2. cancelAllJob 取消所有定时

  • 取消所有定时
  • @return bool true 代表有任务被取消

function main(){
    var result = cancelAllJob();
    logd(result);
}
main();

11.3. cancelJob 取消指定TAG定时

  • 通过tag对定时任务进行取消
  • @param tag tag名称,startJob的时候tag参数的值
  • @return bool true 代表有任务被取消
    
    function main(){
    
        var result = cancelJob("task1");
        logd(result);
    }
    main();
    

11.4. getAllJobTag 获取所有定时标签

  • 取得所有的定时任务标签
  • @return 字符串数组或者null

function main(){
    var result = getAllJobTag();
    logd(result);
}
main();

12. 其他函数

12.1. random 随机函数

  • 取得某个范围的随机值
  • @param min 最小值
  • @param max 最大值
  • @return 整型 在min和max中间的值, 包含最大和最小值

function main(){
    var result = random(100,1000);
    sleep(result);
}
main();

results matching ""

    No results matching ""