请注意,本文编写于 1604 天前,最后修改于 1418 天前,其中某些信息可能已经过时。
x> 本脚本已过期,仅作存档
前言
本脚本仅供学习交流之用,使用者如何使用与本文作者无关。
AutoJS下载 & 教程
脚本【控件定位版】
脚本
//遇到问题请在https://chrxw.com留言
//Ver:2.3 By Chr_([email protected])
//增强模式,支持自动加购任务,如果不需要请把true改成false
var adv_mode = true;
auto.waitFor();
toast('\n脚本开始运行\n请切换到任务页');
className("android.view.View").text("做任务领金币").waitFor();
if (!className("android.view.View").textContains("任务每日0点刷新").exists()) {
className("android.view.View").text("做任务领金币").findOne().parent().click();
}
toast("\n即将开始工作\n中途需退出请按【音量+】终止");
sleep(2000);
var i = 0;
for (;;) {
var btn = text("去完成").findOnce(i);
if (btn != null) {
var task = btn.parent().parent().parent();
var txt = task.child(0).child(1).text();
if (txt.search("8秒") != -1) {
btn.click();
view();
i = 0;
} else if (txt.search("88") != -1) {
btn.click();
view();
i = 0;
} else if (txt.search("浏览可得") != -1) {
btn.click();
view2();
i = 0;
} else if (adv_mode & txt.search("5个") != -1) {
btn.click();
advview();
i = 0;
} else {
i++;
}
} else {
toast("\n脚本运行完毕\n模拟浏览任务全部完成(大概)");
exit();
}
}
//随机延时
function rsleep(s) {
while (s--) {
sleep(random(900, 1200));
}
}
//模拟返回
function advback() {
for (var i = 0; i < 3; i++) {
if (!className("android.widget.ImageView").desc("返回").exists()) {
rslideR(1);
rsleep(2);
continue;
}
className("android.widget.ImageView").desc("返回").click();
rsleep(3);
if (className("android.view.View").textContains("做任务领金币").exists()) {
return;
}
}
toast("定位不到返回按钮,模拟返回键");
back();
}
//随机划屏
function rslide(i) {
while (i--) {
var x1 = random(200, 900);
var y1 = random(1200, 1900);
var x2 = random(200, 900);
var y2 = random(1000, 1200);
swipe(x1, y1, x2, y2, 300);
rsleep(1);
}
}
//随机划屏,反向
function rslideR(i) {
while (i--) {
var x1 = random(200, 900);
var y1 = random(900, 1300);
var x2 = random(200, 900);
var y2 = random(1500, 1900);
swipe(x1, y1, x2, y2, 300);
rsleep(1);
}
}
//模拟浏览(浏览会场任务)
function view() {
rsleep(3);
rslide(10);
className("android.view.View").textStartsWith("恭喜完成").findOne(5000);
rslideR(1);
rsleep(3);
advback();
}
//模拟浏览(浏览会场任务)
function view2() {
rsleep(1);
for (var i = 0; i < 4; i++) {
back();
rsleep(3);
if (className("android.view.View").textContains("做任务领金币").exists()) {
return;
}
}
}
//高级浏览(浏览商品、加购任务)
function advview() {
rsleep(3);
var add_cart = true;
var count = 4;
if (className("android.view.View").textContains("浏览以下5个商品").exists()) {
add_cart = false;
count = 3;
}
toast(add_cart);
for (var i = 0; i < 5; i++) {
var prices = className("android.view.View").textMatches("^¥[0-9]+\.[0-9][0-9]").find();
var good = prices[i].parent().parent();
if (good.childCount() > count) {
continue;
}
if (!add_cart) {
//good.click();
rect = prices[i].bounds();
click(rect.centerX(), rect.centerY());
rsleep(2);
rslide(2);
className("android.widget.ImageView").desc("返回").click();
} else {
good.child(3).click();
rslide(1);
}
rsleep(2);
}
advback();
rsleep(3);
}
说明
- 修复了浏览商品函数失效的问题。
- 支持了一个新的任务。
- 稳定性应该提升不少,测试了两个号除了遇到了一次网络问题卡住之外没有其他问题。
- 加了个返回的函数,应该不会出现跳到京东主页的情况了。
- 还有一个浏览任务有待支持(但是没有浏览时间要求,手动完成也不麻烦)
- 推荐使用方式是先打开活动页,然后运行脚本,切换回京东就能自动运行了。
- 需要中断运行请按
音量+
。 - 当前已支持加购物车和浏览商品任务。
脚本【旧版截图识色版】(仅存档)
点击展开
脚本
"auto";
toast('开始运行,请打开京东任务页')
images.requestScreenCapture()
ys = new Array(760, 1160, 1350, 1550, 1730)
x = 970
sleep(500)
on = -49108
off = -7570829
for (;;) {
y = ison()
if (y > 0) {
click(x, y)
sleep(500)
for (i = 15; i; i--) {
x1 = random(200, 800)
y1 = random(1200, 1900)
x2 = random(200, 800)
y2 = random(1000, 1200)
swipe(x1, y1, x2, y2, 300)
sleep(1100)
}
back()
}
sleep(3000)
}
function ison() {
j = ys.length
img = images.captureScreen()
for (i = 0; i < j; i++) {
if (Math.abs(img.pixel(x, ys[i]) - on) < 50) {
return (ys[i])
}
}
return (0)
}
说明
- 脚本的原理是每1秒截一次屏,判断(x,ys)的位置是不是红色,是的话会模拟浏览动作。
- 浏览商品和加购物车任务只能手动完成,使用脚本会有问题。
- 此脚本只适配了Mix2S,其他屏幕分辨率请自行修改坐标:
- 在
开发者模式
里打开指针位置
就能知道点击位置的坐标了。
- 如图,在每个按钮的右侧背景上取点(没必要很精确,注意避开按钮文字),坐标为(x,y1),(x,y2),(x,y3),……,记录x和y1,y2,y3,……的值,第一个分享按钮没必要记录。
- 脚本第5行
x=960
,把960改成你测得的x的值。 - 脚本第7行
ys=new Array(950,1155,1350,1540,1715)
,把里面的数字改成y1,y2,y3,……的值,
注意要用半角逗号分隔,不然会报错。例如你量出来有6个按钮,坐标为(980,950)(980,1150)(980,1350),(980,1530),(980,1710),(980,1890)
修改后的脚本:
第5行x=980
第7行ys=new Array(950,1150,1350,1530, 1710,1890)
- 在
在我的手机上正常运行不代表能在所有设备上正常运行,如果遇到问题欢迎在下方留言。
可以的话请带上出问题时候的截图发到我的邮箱([email protected])里,感谢理解与支持。
本文链接:https://blog.chrxw.com/archives/2020/05/21/1226.html
转载请保留本文链接,谢谢
182 条评论
牛逼,小米9MIUI12内测安卓10运行一点毛病没有
屏幕只能显示五个按钮,ys数组也要改成四个吗?
不一定要5个,理论上2个就行了,因为完成过的会跑到下面
没毛病,正在运行,不管了
浏览五个商品的不会自动点击,还有分享和拉人的不能自动跳过
已经更新了,现在支持了
明天我试试优化一下
那个没办法,手动做一下吧,要识别的挺麻烦的
屏幕也是和mix2s一样2160x1080像素
bitmap.width()(#30) 最前面还有个小于号发不出来
安卓版本9.0 错误:Wrapped java.lang.illegalArgumentException:x must be
Math.abs(img.pixel(x, ys[i]) - on)这个值一直是大于50 ̄﹃ ̄
那个按钮是渐变色,我取值是文字右边的颜色,有可能其他地方颜色差的比较多
脚本的第四行吧,但改好后启动没反应1,也没错误提示,就提示录屏,然后啥我没有了
楼主,小米9内测版,直接运行死机
有错误提示吗?
没有,直接卡死在那,最后只好重启手机了,对了我的版本是MIUI12内测版,是不是和这个有关系
我也是MIUI12,没有问题
好吧
谢谢老哥分享!本来还在想要不要自己摸一个,谢谢了!
能不能直接搜“去完成”然后忽略第一个
我明天试试针对这个优化下
整个界面是web实现的,搜文字太麻烦了,记录坐标的话只要不记录第一个按钮的位置就行了