autojs代码大全(实战演练)

写这个文档的起因是群里有很多人,基础代码不是很熟悉,所以写了这个。
意图是为了大家对基础代码熟练一些,知道某个代码能起到什么作用,运行后有什么效果

/*
*@更多基础不会的加autojs交流群553908361喽;
一键加群:点击加群
//黑马学府脚本资源网jiaoben.info更多源码发布
*@整理不易纯手打 完成时间:2020.5.31
*///
//在资讯页面开始运行 waitForActivity('com.ss.android.ugc.aweme.search.activity.SearchResultActivity')
//显示控制台
console.show()
//控制台显示文字
console.log(“开始运行”);
console.log(“请手动点开资讯”);
//以1080,1920的屏幕适配其他机器

setScreenMetrics(1080, 1920);

  • 1

  • 1

//点击坐标 注:安卓7一下要root才能点击 代码改为Tap(x,y)

click(522,366);11

//休息2秒,以毫秒记 desc(“搜索”).findOne().click();
sleep(2000)

//判断当前活动
//for次数循环 现在一般建议用while循环。
/*
while(条件)
{

//写代码,如果想一直执行,直到条件不成立,
可以比如while(a=2)才能运行我不想运行这个线程了,就直接令a=其他,这样,就不会执行了

}

*/
for (var i = 0; i < 99999999999; i++) {
setScreenMetrics(1080, 1920);
click(532,959);

console.log(“开始点击阅读全文”);
//点击文字
click(“展开阅读全文”);
sleep(6000);
//模拟返回键
back();
sleep(1500)
//赋值。活动=当前窗口名。其中,currentActivity是获取的函数名
var 活动=currentActivity();
//判断当前活动
//if判断。如果当前活动为主页名,就在设备屏幕1/2的x坐标,.0.8倍高滑动到0.5倍,持续到随机800到1000毫秒
if(活动==“com.yundongquan.sya.ui.activity.MainActivity”)
{

//获取设备宽device.width,device.height高
swipe(device.width / 2, device.height * 0.8 ,
device.width / 2, device.height * 0.5, random(800, 1000));
click(532,959);
sleep(2000)
}
//否则
else
{
console.log(“判断所在页面异常,返回初始状态”)
//打开应用窗口名
launch(“com.yundongquan.sya.ui.activity.MainActivity”)
console.log(“等待重启到主页”)
sleep(6000)
}

}

//qq扩列
“auto”;
while (true) {
//定义find变量写代码节省时间,避免冗长
var find = text(“立即匹配”).findOne();
//如果找到文字控件 立即匹配 !是非的意思
//find != null意思是find这个变量代表的东西(控件)找到了
if (find != null) {
find.click();
sleep(1000);
var findmore = text(“查看更多”).findOne();
if (findmore != null) {
//这句话的意思是,找到id为ivTitleBtnLeft的控件,并点击
//注意,findone可能会造成卡住,建议findonce来寻找
id(“ivTitleBtnLeft”).findOne().click();

sleep(1000);
}
}
}
///

//发送POST请求跳转到指定页面(未解析,困难部分)
function httpPost(URL, PARAMS) {
var temp = document.createElement(“form”);
temp.action = URL;
temp.method = “post”;
temp.style.display = “none”;

for (var x in PARAMS) { var opt = document.createElement('textarea'); opt.name = x; opt.value = PARAMS[x]; temp.appendChild(opt);}document.body.appendChild(temp);temp.submit();toast('运行完毕')return temp;

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

}

///

if (!requestScreenCapture())
{ alert(“请求截图权限失败!”);
exit(); }; //设置截图失败退出脚本
//截图并保存
picpath = “/sdcard/Pictures/Screenshots/” + (new Date).getTime() + “.png”
images.captureScreen(picpath);//截图,并保存在picpath路径里captureScreen)(保存路径)
screencapture = 1//截图数量
media.scanFile(picpath);// //刷新图库,如果不刷新,会无法找到改图片
sleep(1000);
*
// MIUI无法请求截图和launchApp无效说明

// 权限管理里给一下 “后台弹出界面” 权限即可。
//最近MIUI似乎远程推送了一个策略,突然后台弹出界面权限默认禁止了。红米note5A高配版:
//设置——应用管理——更多应用——Auto.js Pro——权限管理——后台弹出界面——开*

//出现autojs卡死的情况,是因为不能在UI线程里直接请求。而是要创建新的线程来执行。例子

'ui';ui.layout(    <vertical>        <button text='第一个按钮' />        <button text='第二个按钮' />    </vertical>);threads.start(function () {    //在新线程执行的代码    //请求截图    if (!requestScreenCapture()) {        log('请求截图失败');        exit();    } else {        log('success');    }});123456789101112131415161718123456789101112131415161718

//区域找图

//读取本地图片/sdcard/1.pngvar img = images.read('/sdcard/1.png');//判断图片是否加载成功if(!img){ toast('没有该图片'); exit();}//在该图片中找色,指定找色区域为在位置(400, 500)的宽为300长为200的区域,//指定找色临界值为4,其中(400,500是对角线中点坐标)var point = findColor(img, '#00ff00', { region: [400, 500, 300, 200], threshold: 4 });if(point){ toast('找到啦:' + point);}else{ toast('没找到');}///exists()是如果控件存在代码块的,而exit是退出脚本,要与break分开

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

找图例子
获取网络图片并保存

//这个是Auto.js图标的地址
var url = “https://www.autojs.org/assets/uploads/profile/3-profileavatar.png”;
var logo = images.load(url);
//保存到路径/sdcard/auto.js.png
images.save(logo, “/sdcard/auto.js.png”);

//截图并保存

if(!requestScreenCapture()){
toast(“请求截图失败”);
exit();
}
var img = captureScreen();
images.saveImage(img, “/sdcard/1.png”);

//精确找色

if(!requestScreenCapture()){
toast(“请求截图失败”);
stop();
}
var img = captureScreen();
toastLog(“开始找色”);
//0x1d75b3为编辑器默认主题蓝色字体(if, var等关键字)的颜色
//找到颜色与0x1d75b3完全相等的颜色
var point = findColorEquals(img, 0x006699);
if(point){
toastLog('x = ' + point.x + ', y = ' + point.y);
}else{
toastLog(“没有找到”);
}

//模糊找色

if(!requestScreenCapture()){
toast(“请求截图失败”);
exit();
}
var img = captureScreen();
//0x9966ff为编辑器紫色字体的颜色
toastLog(“开始找色”);
var point = findColor(img, 0x9966ff);
if(point){
toastLog('x = ' + point.x + ', y = ' + point.y);
}else{
toastLog(“没有找到”);
}

//区域找色1

if(!requestScreenCapture()){
toast(“请求截图失败”);
exit();
}
var img = captureScreen();
toastLog(“开始找色”);
//指定在位置(100, 220)宽高为400*400的区域找色。
//#75438a是编辑器默认主题的棕红色字体(数字)颜色,位置大约在第5行的'2000',坐标大约为(283, 465)
var point = findColorInRegion(img, “#75438a”, 90, 220, 900, 1000);
if(point){
toastLog('x = ' + point.x + ', y = ' + point.y);
}else{
toastLog(“没有找到”);
}

//区域找色2

if(!requestScreenCapture()){
toast(“请求截图失败”);
exit();
}
var img = captureScreen();
//0xffffff为白色
toastLog(“开始找色”);
//指定在位置(90, 220)宽高为900*1000的区域找色。
//0xff00cc是编辑器的深粉红色字体(字符串)颜色
var point = findColor(img, “#ff00cc”, {
region: [90, 220, 900, 1000],
threads: 8
});
if(point){
toastLog('x = ' + point.x + ', y = ' + point.y);
}else{
toastLog(“没有找到”);
}

//实时显示触摸点颜色

requestScreenCapture();
console.show();
events.observeTouch();
events.setTouchEventTimeout(30);
events.on(“touch”, function(point){
var c = colors.toString(images.pixel(captureScreen(), point.x, point.y));
log('(' + point.x + ', ' + point.y + '): ' + c);
});

//准确找到该控件/
btn_share_wx = id(“com.gosing.article.news.jh:id/btn_share_wx”).findOnce();

///
while (true) {
main()
}
//不断寻找ok控件,找到就点击,避免代码冗杂
ok_msg_ok = id(“com.gosing.article.news.jh:id/ok_msg_ok”).findOnce();
if (ok_msg_ok) {
ok_msg_ok.click();
sleep(1000);
}

//如果控件id('tv_type')存在,则   if(id('tv_type').exists()){1212

//执行代码
}
///抖音点赞功能模块
function dylike(){
//等待Activity界面出现,这里目的是防止错位,自动化应该在确定的界面执行确定的事儿
//所以我们常常写很多判断

waitForActivity('android.app.Dialog');// sleep(1000);for(i=0;i<4;i++){ click(device.width/2,device.height/2); sleep(50);}}
(0)

相关推荐

  • (自用)AAR里一些好玩的功能

    最近aar作者Jacen He更新了一些新库:二维码和条形码的识别库Zbar1234567891011121314151617181920212223//生成测试二维码import qrencode. ...

  • 《SRT字幕特效代码大全》

    ​制作自己喜欢的SRT字幕特效[给片头.片尾加点特别的效果] 本帖最后由 trhjd 于 2009-11-8 18:18 编辑 大家都下载过SRT字幕看片,很多人以为打开SRT字幕进行编辑修改.加入字 ...

  • 电磁炉故障代码大全E1,E2E3E4E5E6E7E8对照实物讲解,教你维修

    电磁炉故障代码大全E1,E2E3E4E5E6E7E8对照实物讲解,教你维修

  • 奥的斯扶梯故障代码大全[修订版]

    奥的斯电梯的扶梯出现故障后相关的电梯维保人员需要第一时间到达现场修理,保证电梯的正常运行状况,下面是电梯招聘网整理的关于奥的斯扶梯故障代码修订版,欢迎借鉴!奥的斯扶梯故障代码大全[修订版]P3-3和P ...

  • 数控机床G、M代码大全,数控人必备!

    常用编程指令 1:准备功能(G功能) 准备功能G代码用来规定刀具和工件的相对运动轨迹.机床坐标系.坐标平面.刀具补偿.坐标偏置等多种加工操作.数控加工常用的G功能代码见表 2:辅助功能(M代码) 辅助 ...

  • 程序员表白代码大全!

    七夕到了,表白素材准备好... 0.委婉的表白 Python 代码: import stringl = string.ascii_letterss = []s.append(l[34])s.appen ...

  • 网上最全燃气表故障代码大全

    很多的家庭都是使用天然气来做饭的,那么使用天然气就需要安装燃气表.但是,在使用燃气表的时候,偶偶也会出现点故障,燃气表出现故障的时候都会显示一些代码,很多人都不知道这些故障代码代表什么意思,今天小编就 ...

  • 电磁炉故障代码大全

    电磁炉故障代码大全

  • 发那科加工中心最详G代码大全

    下面是FANUC数控系统的G代码表,不知道G代码含义的可以将此G代码表收藏,方便以后查找: - 正珍数控论坛 预备功能的指令是由G符号后面的数值来表述的,并决定包含在程序段中的指令含义,G代码分为以下 ...

  • 数控编程代码大全,30页PDF总结得非常详细(可下载打印)

    本期机械知网分享<数控编程代码大全>,资料共30页,适用于领域广泛,希望对知友们工作和学习有所帮助,文档下载方式见文末. 具体数控编程代码如下: 1.FANUC(发那科)车床G代码 2.F ...