隐藏

Auto.js安卓脚本自动化app的代码语句大全

发布:2023/10/19 23:19:28作者:管理员 来源:本站 浏览次数:554

一、基本语句

(一)常用


home();   // 返回home主页

Back();   // 返回键

sleep(1000);    // 延时1000毫秒

var num = random(1,10);   // 设置1~10的随机数

click("app名");    // 打开某app

toast("你好,世界");  // 底部文本提醒

setText("你好,世界");   //在输入框点击出现光标,即可使用该语句填写文本

//或者setText(0,"账号"); setText(1,"密码");


 


(二)点击


// 设置屏幕指标再点击,使得分辨率不同的手机也点在相同的点

setScreenMetrics(1080, 1920);

click(800, 200);      // 按坐标点击


longClick(800, 200)   // 长按600毫秒,并返回是否长按成功

press(800,200,2000)   // 设置坐标长按2000毫秒,并返回是否成功


 


(三)按住随机滑动



// 入参(起点x,起点y,终点x,终点y,过程耗时单位毫秒)

sml_move(257, 1670, 870, 1670,800);  


function bezier_curves(cp, t) {

   cx = 3.0 * (cp[1].x - cp[0].x);

   bx = 3.0 * (cp[2].x - cp[1].x) - cx;

   ax = cp[3].x - cp[0].x - cx - bx;

   cy = 3.0 * (cp[1].y - cp[0].y);

   by = 3.0 * (cp[2].y - cp[1].y) - cy;

   ay = cp[3].y - cp[0].y - cy - by;

   tSquared = t * t;

   tCubed = tSquared * t;

   result = {

       "x": 0,

       "y": 0

   };

   result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;

   result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;

   return result;

};

function sml_move(qx, qy, zx, zy, time) {

   var xxy = [time];

   var point = [];

   var dx0 = {

       "x": qx,

       "y": qy

   };

   var dx1 = {

       "x": random(qx - 100, qx + 100),

       "y": random(qy , qy + 50)

   };

   var dx2 = {

       "x": random(zx - 100, zx + 100),

       "y": random(zy , zy + 50),

   };

   var dx3 = {

       "x": zx,

       "y": zy

   };

   for (var i = 0; i < 4; i++) {

       eval("point.push(dx" + i + ")");

   };

   log(point[3].x)


   for (let i = 0; i < 1; i += 0.08) {

       xxyy = [parseInt(bezier_curves(point, i).x), parseInt(bezier_curves(point, i).y)]

       xxy.push(xxyy);

   }

   log(xxy);

   gesture.apply(null, xxy);

};


 


(四)控制台


console.show();         // 显示控制台

console.log("白色");      // 控制台打印文本:白色

console.info("绿色");       // 控制台打印文本:绿色

console.warn("蓝色");      // 控制台打印文本:蓝色

console.error("红色");     // 控制台打印文本:红色


 


(五)用线程自动开启截图权限


console.show();

threads.start(function(){

           if(auto.service != null){  //如果已经获得无障碍权限

                   //由于系统间同意授权的文本不同,采用正则表达式

                   let Allow = textMatches(/(允许|立即开始|统一)/).findOne(10*1000);

                   if(Allow){

                           Allow.click();

                   }

           }

});

var result = images.requestScreenCapture();    // 申请截图权限

console.log(result)




(六)读写权限


//读

var result = files.read("/mnt/shared/Pictures/result.txt")

console.log(result)


// 写

files.write("/mnt/shared/Pictures/result.txt","你好,世界");    // 直接写法

files.append("/mnt/shared/Pictures/reline.txt", JSON.stringify([1,2])+"\n")   // 追加写法


  


二、布局代码


// 常用控件属性,方便定位

id("xxx").className("xxx").depth(int).text("xxx").desc("xxx")  


 


(一)位置


// 直接通过id找到控件点击

id("hkp").findOne(10).click()  


// 通过文本选择找到控件,根据控件中心坐标偏移完成点击(推荐使用)

var label = className("android.widget.TextView").text("账号").findOne(10)

console.log(label.bounds().centerX(),label.bounds().centerY())

click(label.bounds().centerX()+200,label.bounds().centerY())   // 向控件右偏移200点击


// 找到控件的父亲的第二个孩子进行点击,child(0)为第一个孩子,即控件本身

className("android.widget.TextView").text("密码").findOne(10).parent().child(1).click()


// 输出控件文本

var label = className("android.widget.TextView").text("国家/地区").findOne(10).parent().child(1)

console.log(label.text())


// 按控件文本找按钮点击

var button = textMatches("登录").findOne(10)

if(button){button.click()}


 


(二)判断点击


// 等待控件出现

while(!className("android.widget.TextView").text("我的").findOne(10)){sleep(500)};

log("打开成功!")


// 等等控件出现然后点击

while(!className("android.widget.TextView").text("签到").exists()){sleep(500)}

className("android.widget.TextView").text("签到").click()


//找到控件文本包含内容进行点击

if(textContains("签到").exists()){

   textContains("签到").findOnce(0).click()     //找到第一个控件点击,第二个改1,类推

}


 


(二)输出当前页面所有文本


for(i=0;i<1000;i++){

   var label = textMatches("(.*?)").findOnce(i)

   if(!label){break}

   log(label.text())

}


 


三、函数大全


1、text函数


text("签到")    // 找所有"签到"控件

textContains("签到")    // 找所有包含"签到"的控件

textStartWith("签到")     // 找所有"签到"开头的控件

textEndsWith("签到")     // 找所有"签到"结尾的控件

textContains("签到").findOnce(0)   // 找第一个包含"签到"的控件

textMatches("开始(.*?)了").findOnce(0)   // 找第一个正则表达式内容


 


2、bounds函数


bounds().left      "长方形左边界的x坐标"

bounds().right     "长方形右边界的x坐标"

bounds().top       "长方形上边界的y坐标"

bounds().bottom    "长方形下边界的y坐标"

bounds().centerX() "长方形中点x坐标"

bounds().centerY() "长方形中点y坐标"

bounds().width()   "长方形宽度也就是控件宽度"

bounds().height()  "长方形高度也就是控件高度"