请注意,本文编写于 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 条评论
浏览那段改成back就好了
for (var i = 0; i < 5; i++) {
var good = prices[i].parent().parent();
if (good.childCount() > count) {
continue;
}
if (!add_cart) {
toast("浏览。。。");
good.click();
// rslide(2);
//className("android.widget.ImageView").desc("返回").click();
sleep(3000);
toast("返回。。。");
back();
} else {
toast("加购物车。。。");
good.child(2).click();
rslide(1);
}
rsleep(2);
}
脚本已更新,应该解决了
back();的话会回到京东主页……,我明天再改改
我这样改目前正常可用了 我已经开刷了 明天啥样还不知道 等你再测测
返回出问题的是加购和5个浏览的页面,返回需要左上角,其他任务没事
那段代码是点左上角返回的,className("android.widget.ImageView").desc("返回").click(); 这个就是模拟点击左上角
5个浏览返回出问题,应该是desc("返回按钮")。加购也不能返回,需要改一下
了解,感谢反馈
老哥辛苦,让我白嫖了一波代码
老哥,你手机是安卓几啊,我小米9安卓10打开之后没有异常,到活动页面就是三个弹窗然后结束,开始运行,即将开始工作,浏览任务结束。日志里面也没有异常,奇怪了
安卓Q MIUI12
13:52:33.751/ E: TypeError: Cannot find function parent in object com. stardust. automator. UiObjectCollection@7e856f.(< jdnew>#70) at script. advview(< jdnew>:70) at script(< jdnew>:24)
已更新,试试新版有没有解决这个问题呢?
感觉像是页面没加载完,没定位到按钮,试试在68行 var prices = className("android.view.View").textMatches("^¥[0-9]+\.[0-9][0-9]").find(); 前面加一句 className("android.view.View").textMatches("^¥[0-9]+\.[0-9][0-9]").findOne(8000);
加购任务进去就报错
TypeError: Cannot call method "parent" of undefined (#70)
at script.advview(:70)
at script(:24)
手机米8
已更新,问题应该已经解决了
估计是页面没加载完,试试在68行 var prices = className("android.view.View").textMatches("^¥[0-9]+\.[0-9][0-9]").find(); 前面加一句 className("android.view.View").textMatches("^¥[0-9]+\.[0-9][0-9]").findOne(8000);
加了没用,我也报这个错
麻烦把出错时候京东的截图发到我邮箱 [email protected] ,方便我查错,谢谢
老哥手机屏幕上的控件怎么获取啊,你怎么知道那个元素的父元素的父元素就是你要的元素 。。。。auto.js自带的那个不太行
有Xposed的话可以用插件开调试模式用AndroidStudio调试
开悬浮窗,进京东以后点悬浮窗,那个黄色的按钮是看布局
前面21个都可以,就是在浏览口碑好货那卡住了,而且重新运行一直卡在那
收到,明天任务更新以后我再优化一下,感谢反馈
进入活动页面后会浏览店铺,但只会进行一次,并且浏览后不会返回活动页面
我也是,在浏览商品会卡住
了解了,手动再进活动页可以继续做的
好像有一个任务完成以后按返回键会直接回到京东主页,就是不知道是哪个,明天再解决,我今天所有号都做完了。
是的,不能按返回键,要按左上角那个小箭头
了解,明天任务刷新以后我再做优化
新版的需要其他设置吗?我运行之后出现这样的代码
新版的需要其他设置吗?我运行之后出现这样的代码
missing } in compound statement(#78)
这样需要怎么解决呢,我是直接运行新版的代码,还没做其他改变!!
可以发autojs编辑器里的截图到[email protected]吗?
有可能是没有复制全
脚本运行起来了,不过每次都要自己点活动页面,脚本直接返回到京东首页去了!
已经复制全了。现在遇到了一个问题就是,打开活动页,没有自动运行,没有反应哦!
没有弹出toast吗?有可能是弹那个签到提醒了,把那个关掉然后重新运行脚本试试?
现在已经调试好了,不过后台的AutoJs会掉,运行着弄了10个左右,就会停下来,才发现后台掉了,就要重新去打开!
说实话挺不错啦,谢谢博主!
翻页可以用一句解决
swipe(device.width / 2, 4 * device.height / 5, device.width / 2, device.height / 5, 1000);
知道,随机是为了防检测
模拟器行吗?⌇●﹏●⌇
可以的,模拟器有ROOT的话可以在设置里开ROOT模式,也是一样的。
为什么只完成了一个任务就结束了呢。。。是需要循环运行吗
结束?是返回到京东主页了吗?
好像是有点任务做完会直接返回到主页,暂时只能手动再进活动页,明天我再调整一下,主要我也不知道是哪个任务引起的,没法做针对性优化
和他一样,点完一个8秒,就全部退出,连JD都退出了~
只有明天再看了,我自己测试2个号都比较正常,现在也没得号做调试了
唯一已知的问题是有点任务完成以后会回到京东主页。
是的 点一个 等8秒后就自动返回首页不动了
这是已知的问题,我明天改进一下,你还记得具体是那个任务吗?
无障碍怎么开启?
无障碍->更多已下载的服务->Auto.js->开启
不是全自动的?每次返回京东首页 还得自己点右下角的叠蛋糕 进到任务界面才操作 操作完一个后又返回首页
你能告诉我是什么任务做完会返回到主页吗?我知道有个别时候会返回主页,但是不清楚到底是哪一个。
老铁能弄一个金融的脚本不
行,我研究下
v587
博主能不能加一个浏览和加购的功能,来一个函数,然后自己把浏览和加购的任务坐标填进去。哈哈,虽然自己浏览加购也花不了几秒钟
做好了,已经更新。
在做了,预计中午前完成OωO
支持
博主好,我用的华为手机,修改了按钮位置之后,软件不起作用~
可以试试新版,不用坐标了
开启无障碍时候提示:权限请求界面被某个应用遮挡
取消全面屏可以解决(但是习惯了全面屏操作),还有其他办法吗?小米8
别开autojs的悬浮窗,貌似是因为这个。
不开悬浮还能用脚本?
可以的,我这个脚本是靠截图判断是不是在京东里,只有检测到那几个坐标可能是按钮才会工作,完全可以先开脚本再开京东。
看了,悬浮没开,目前只知道取消全面屏手势可以
哦哦,我一直用的虚拟按键,我不知道全面屏手势会有影响。
我取消全面屏了,脚本也修改好坐标了
启动后,提示:开始运行,请打开京东任务页,
我切换到京东页面不会开始任务,怎么解决
有可能是颜色不对,那个按钮是渐变色,我取的颜色是在文字右边一点,有可能左边的颜色差的比较多,脚本识别不了,你把x改大点让坐标定在按钮右侧试试?