话不多说,先上个图,基本工作原理就是仿人工进行操控。
我本来是想着弄一个完整的动图,但是因为只能上传5M以内的图片,也是删了又删,最后就这样了,不过关键点都有。
这个脚本的功能就是偷能量,采摘自己能量的我还没写,因为最近出不了门,也没能量,就先懒着写了,它可以基于控件,以及截取图形进行模式匹配来找到需要找到的图片的位置,返回值时point。
首先就是
launch([AppName]);
//这个是后面跟着应用名字,比如支付宝,QQ,微信等
这就可以打开应用软件了,已经向偷取能量迈出了第一步。
接下来是利用坐标来找到蚂蚁森林的,当然,截取图片,然后进行图片匹配来打开蚂蚁森林,我先介绍一下基于坐标的
click(x, y);
//就是屏幕坐标的x轴,以及y轴的坐标
click函数是模拟点击的,它可以进行一次点击。
接下来就是打开排行榜了,我这里用的是排行榜这个text来作为唯一标识符
,代码如下
text("排行榜").findOne().click();
//找到控件属性text为排行榜的控件,然后进行点击
这样就能够进入到排行榜了。
以下是一开始的全部代码:
setTimeout(function(){
auto();
launchApp("支付宝"); //打开支付宝
sleep(3000);
click(810,444,1080,650); //点击蚂蚁森林
// text("蚂蚁森林").className("android.widget.TextView").findOne().click();
sleep(3000);
className("android.webkit.WebView").findOne().scrollForward(); //滑动屏幕
sleep(2000);
text("总排行榜").findOne().click(); //找到排行榜并且打开
sleep(200);
className("android.webkit.WebView").findOne().scrollForward(); //滑动屏幕
text("查看更多好友").findOne().click(); //查看更多好友
sleep(2000);
while(1){
var sc = true;
//找到有能量的位置
while(1){
requestScreenCapture();
sleep(3000);
var cz = images.read("/storage/emulated/0/jb/cz.jpg"); //用这个图片在大图里找
var p = findImage(captureScreen(), cz, { //从大图里找到小图
threshold: 0.9
});
if(p){ //若找到则为true,否则为false
press(p.x, p.y, 5);
break;
}else{
sc = className("android.support.v7.widget.RecyclerView").findOne().scrollForward(); //若为false则滑动窗口
requestScreenCapture();
sleep(3000);
var sy = images.read("/storage/emulated/0/jb/20.jpg");
var u = findImage(captureScreen(), sy, {
threshold: 0.9
})
if(u)
swipe(500, 350, 500, 300, 3000);
var my = images.read("/storage/emulated/0/jb/my.jpg");
var m = findImage(captureScreen(), my, {
threshold: 0.9
})
if(m){ //返回并到主界面
var i = 0;
for(i=0; i<4; ++i)
back();
// back();
// back();
// back();
// back();
home();
exit();
}
}
}
if(sc){ //若窗口为true,则执行,否则break
//收取能量
// sleep(200);
requestScreenCapture(); //获取屏幕截图功能
sleep(3000);
var sq = images.read("/storage/emulated/0/jb/sq.jpg"); // 给定小图标
var q = findImage(captureScreen(), sq, { //在截图中寻找小图标
threshold: 0.8
});
requestScreenCapture();
sleep(3000);
var sq1 = images.read("/storage/emulated/0/jb/sq1.jpg");
var q1 = findImage(captureScreen(), sq1, {
threshold: 0.8
})
if(q)
toast(q);
if(q1)
toast(q1);
sleep(3000);
while(1){ //找出所有未收取的能量,然后收取
if(q){
press(q.x, q.y, 5);
requestScreenCapture();
sleep(3000);
var sq = images.read("/storage/emulated/0/jb/sq.jpg");
var q = findImage(captureScreen(), sq, {
threshold: 0.8
});
toast(q);
sleep(3000);
}
if(q1){
press(q1.x, q1.y, 5);
// if(q1)
// press(q1.x, q1.y, 5);
requestScreenCapture();
sleep(3000);
var sq1 = images.read("/storage/emulated/0/jb/sq1.jpg");
var q1 = findImage(captureScreen(), sq1, {
threshold: 0.8
});
toast(q1);
sleep(3000);
}
if(!q)
if(!q1){
toast("没有找到");
break;
}
}
sleep(300);
back();
sleep(1000);
}else{
break;
}
}
}, 1000);
以后还会写一些其他的脚本代码,如果有想要源码的可以关注我,然后私信我,我发给你源代码。