前言:
双11来了,我也是一个剁手党,当然要想办法能省点钱算一点,双11的活动是攒喵币,和往年一样,点击各种商家页面来获取,这个过程是一个重复的过程,往年我都是手动点完的,但是今年真不想再继续做这些重复的事了,于是就有了下面这个自动脚本.
技术调研:
在网上也搜索了好多的方式方法,最终还是使用了autojs这个脚本工具,正所谓物理外挂最为致命,这个也有点类似物理外佳了.
实现效果:

还有自动浏览店铺的功能,这里没办法上传效果图
实现代码:
这次双11,在淘宝与支付宝中都有活动,所以写了两个项目,不过代码逻辑大体都差不多,主要是点击到活动页面=>等待15秒 => 返回上一层页面... 然后循环
代码贴上:
var baseWidth = 1080,baseHeight = 2400;var height = device.height;var width = device.width;setScreenMetrics(baseWidth,baseHeight);threads.start(function(){ events.observeKey(); events.on("key_down", function(keyCode, events){ if(keyCode == keys.volume_up){ toastLog('停止脚本使用') exit(); } });});var canCapture = requestScreenCapture();if(!canCapture){ toast('请授权截图!') exit()}launchApp('手机淘宝')sleep(3000);click(800,1218);sleep(6000);let catImg = images.read('/sdcard/catImg.jpg');if(catImg === null){ catImg = images.load('https://pic1.zhimg.com/80/v2-8a9af44ba48b553fbbdafd96475ad47c_1440w.jpeg'); // 图片不能为png格式的 无法加载到 catImg.saveTo('/sdcard/catImg.jpg');}// let screenCaptureImg2 = images.grayscale(screenCaptureImg)// images.save(screenCaptureImg2,'/sdcard/screenCaptureImg2.jpg')sleep(2000);// 如果有11月11日见弹出框 则关闭var eleven = text('好的,11月11日见').findOnce();if(eleven){ click('好的,11月11日见'); sleep(2000)}click(942,1973); // 点击 赚喵币sleep(1500)while(true){ var goText = text('去浏览').findOnce(); if(goText){ click(goText.bounds().centerX(),goText.bounds().centerY()); sleep(5000) swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000); sleep(13000); back(); sleep(2000); click('领取奖励'); sleep(1000) }else{ var goSearch = text('去搜索').findOnce(); if(goSearch){ click(goSearch.bounds().centerX(),goSearch.bounds().centerY()); sleep(5000) swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000); sleep(13000); back(); sleep(2000); click('领取奖励'); sleep(1000); }else{ var array = ['逛一逛"潮酷新品"(0/2)','逛一逛"潮酷新品"(1/2)','逛一逛"潮流趋势"(0/2)','逛一逛"潮流趋势"(1/2)','逛一逛"时尚配饰"(0/2)','逛一逛"时尚配饰"(1/2)','逛一逛"家居百货"(0/2)','逛一逛"家居百货"(1/2)']; var goTo = null; for(var i = 0;i<array.length;i++){ var a = text(array[i]).findOnce(); if(a){ goTo = a; break; } } if(goTo){ click(goTo.bounds().centerX(),goTo.bounds().centerY()); sleep(2000) swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000); sleep(15500); back(); sleep(2000); click('领取奖励'); sleep(1000); }else{ break } } }}toastLog('结束!');click(974,650); // 点击右上角关闭exit();function readImg(name,url){ let catImg = images.read('/sdcard/'+name); if(catImg === null){ catImg = images.load(url); // 图片不能为png格式的 无法加载到 catImg.saveTo('/sdcard/'+name); }; return catImg}
这段代码是用于淘宝收取喵币的,前后仅花了2小时不到,这一块内容还是比较简单的,主要之前写过类似的代码,有些经验了.
遇到的问题:
1.点击文字,由于不确定一些字体是图片还是纯文本,所以在调试的时候,都是凭感觉去试
2.活动的文本较多,有些地方情况无法用找图片的方式来定位要点击的位置,但是文字内容又不确定,所以只能把可能的文本内容情况给加上,比如这一块 var array = ['逛一逛"潮酷新品"(0/2)','逛一逛"潮酷新品"(1/2)','逛一逛"潮流趋势"(0/2)','逛一逛"潮流趋势"(1/2)','逛一逛"时尚配饰"(0/2)','逛一逛"时尚配饰"(1/2)','逛一逛"家居百货"(0/2)','逛一逛"家居百货"(1/2)']; 现在是把我可能遇到的情况都加上了,如果后面支付宝有增删改查的话,也需要跟着改一下逻辑...
3.手机兼容,由于自己只有一个手机,只能使用自己的手机来测试,虽然官网有说可以通过方法setScreenMetrics(baseWidth,baseHeight)来保持比例,但是自己没试过 也许还是不行呢.
4.还有各类的点击可能性,并没有完成覆盖,有些去完成的任务只能通过手点来获取喵币.
5.autojs是好早之前的框架,现在已经不维护了,有一些es6的语法是不支持的,比如const,let,尽量不用到新语法来写业务逻辑.
6.各种sleep 需要等待app内容加载完成,如果页面有不确定因素也是需要延长下一步的执行逻辑的.
总结:
小东西有大用处,在接下来的几天时间能够帮助我节省好多的时间,让自己感觉高大上一些,多探究一些小玩意,对自己以后的职业生涯也有帮助..
原文转自:https://www.xiaye0.com/?p=78
双11来了,我也是一个剁手党,当然要想办法能省点钱算一点,双11的活动是攒喵币,和往年一样,点击各种商家页面来获取,这个过程是一个重复的过程,往年我都是手动点完的,但是今年真不想再继续做这些重复的事了,于是就有了下面这个自动脚本.
技术调研:
在网上也搜索了好多的方式方法,最终还是使用了autojs这个脚本工具,正所谓物理外挂最为致命,这个也有点类似物理外佳了.
实现效果:

还有自动浏览店铺的功能,这里没办法上传效果图
实现代码:
这次双11,在淘宝与支付宝中都有活动,所以写了两个项目,不过代码逻辑大体都差不多,主要是点击到活动页面=>等待15秒 => 返回上一层页面... 然后循环
代码贴上:
var baseWidth = 1080,baseHeight = 2400;var height = device.height;var width = device.width;setScreenMetrics(baseWidth,baseHeight);threads.start(function(){ events.observeKey(); events.on("key_down", function(keyCode, events){ if(keyCode == keys.volume_up){ toastLog('停止脚本使用') exit(); } });});var canCapture = requestScreenCapture();if(!canCapture){ toast('请授权截图!') exit()}launchApp('手机淘宝')sleep(3000);click(800,1218);sleep(6000);let catImg = images.read('/sdcard/catImg.jpg');if(catImg === null){ catImg = images.load('https://pic1.zhimg.com/80/v2-8a9af44ba48b553fbbdafd96475ad47c_1440w.jpeg'); // 图片不能为png格式的 无法加载到 catImg.saveTo('/sdcard/catImg.jpg');}// let screenCaptureImg2 = images.grayscale(screenCaptureImg)// images.save(screenCaptureImg2,'/sdcard/screenCaptureImg2.jpg')sleep(2000);// 如果有11月11日见弹出框 则关闭var eleven = text('好的,11月11日见').findOnce();if(eleven){ click('好的,11月11日见'); sleep(2000)}click(942,1973); // 点击 赚喵币sleep(1500)while(true){ var goText = text('去浏览').findOnce(); if(goText){ click(goText.bounds().centerX(),goText.bounds().centerY()); sleep(5000) swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000); sleep(13000); back(); sleep(2000); click('领取奖励'); sleep(1000) }else{ var goSearch = text('去搜索').findOnce(); if(goSearch){ click(goSearch.bounds().centerX(),goSearch.bounds().centerY()); sleep(5000) swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000); sleep(13000); back(); sleep(2000); click('领取奖励'); sleep(1000); }else{ var array = ['逛一逛"潮酷新品"(0/2)','逛一逛"潮酷新品"(1/2)','逛一逛"潮流趋势"(0/2)','逛一逛"潮流趋势"(1/2)','逛一逛"时尚配饰"(0/2)','逛一逛"时尚配饰"(1/2)','逛一逛"家居百货"(0/2)','逛一逛"家居百货"(1/2)']; var goTo = null; for(var i = 0;i<array.length;i++){ var a = text(array[i]).findOnce(); if(a){ goTo = a; break; } } if(goTo){ click(goTo.bounds().centerX(),goTo.bounds().centerY()); sleep(2000) swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000); sleep(15500); back(); sleep(2000); click('领取奖励'); sleep(1000); }else{ break } } }}toastLog('结束!');click(974,650); // 点击右上角关闭exit();function readImg(name,url){ let catImg = images.read('/sdcard/'+name); if(catImg === null){ catImg = images.load(url); // 图片不能为png格式的 无法加载到 catImg.saveTo('/sdcard/'+name); }; return catImg}
这段代码是用于淘宝收取喵币的,前后仅花了2小时不到,这一块内容还是比较简单的,主要之前写过类似的代码,有些经验了.
遇到的问题:
1.点击文字,由于不确定一些字体是图片还是纯文本,所以在调试的时候,都是凭感觉去试
2.活动的文本较多,有些地方情况无法用找图片的方式来定位要点击的位置,但是文字内容又不确定,所以只能把可能的文本内容情况给加上,比如这一块 var array = ['逛一逛"潮酷新品"(0/2)','逛一逛"潮酷新品"(1/2)','逛一逛"潮流趋势"(0/2)','逛一逛"潮流趋势"(1/2)','逛一逛"时尚配饰"(0/2)','逛一逛"时尚配饰"(1/2)','逛一逛"家居百货"(0/2)','逛一逛"家居百货"(1/2)']; 现在是把我可能遇到的情况都加上了,如果后面支付宝有增删改查的话,也需要跟着改一下逻辑...
3.手机兼容,由于自己只有一个手机,只能使用自己的手机来测试,虽然官网有说可以通过方法setScreenMetrics(baseWidth,baseHeight)来保持比例,但是自己没试过 也许还是不行呢.
4.还有各类的点击可能性,并没有完成覆盖,有些去完成的任务只能通过手点来获取喵币.
5.autojs是好早之前的框架,现在已经不维护了,有一些es6的语法是不支持的,比如const,let,尽量不用到新语法来写业务逻辑.
6.各种sleep 需要等待app内容加载完成,如果页面有不确定因素也是需要延长下一步的执行逻辑的.
总结:
小东西有大用处,在接下来的几天时间能够帮助我节省好多的时间,让自己感觉高大上一些,多探究一些小玩意,对自己以后的职业生涯也有帮助..
原文转自:https://www.xiaye0.com/?p=78