前言:
最近要求每天在微信小程序上学文章、看视频。 学完之后,要求上报学习积分。通过调试,我发现这个微信小程序,可以 通过autojs中对控件的操作,轻松获取学习积分,那么自动报送学习积分的灵感就来了。
开发环境:
autojs: 4.11 (低版本的就对了)
手机:小米10
安卓版本:12
MIUI版本: 13
演示视频:
基于autojs实现每日自动报送学习积分
正文:
1、通过autojs控件操作,抓取分数页面
如下图,通过分析此页面,发现此控件中的 text()函数不为空,这说明,它是有数值存在的。
那么,我就通过边界值bounds()的方式,先找到该控件。
bounds(374,345,706,507).findOne(2000);
学过autojs的可能会问?
1、为什么不通过id、indexInParent、className去查找这个分数控件?
因为,通过截图大家也可以看出来,这个界面的控件太多了。所以,我通过这个控件在屏幕的边界值的方式,找到这个控件。
2、为什么你提供的截图里不显示bounds()值?
因为每个人的手机,分数控件在屏幕中的位置,都是不一样的。
这就需要你拿起autojs控件去调试,所以,我这里只是提供一种思路。
3、为什么是findOne(2000)?
这就涉及到autojs的知识了,如果findOne( )
里的参数值为空,autojs一旦根据边界值找不到分数控件,就会死循环。这里写上2000ms,表示2秒之内找不到,就自动结束寻找。
然后,我通过新建变量x去接收这个控件,通过x.text()的方法,抓取到每日学习积分。
var x =bounds(374,345,706,507).findOne(2000);
console.log(x.text());
2、通过手机系统剪切板,报送分数
要想实现分数报送,那就需要把第一步抓取的分数,复制到剪切板,然后粘贴到你需要报送的APP上。
这里,我选择报送的APP是微信。
通过setClip()
函数粘贴
var y =x.text();
setClip("今日学习分数:"+ y);
通过paste()
函数粘贴
var y =desc("微信").findOne(2000);
y.click();
click(666,666);//这里填写的是你的 文件助手在手机中的坐标值
paste();//这里直接粘贴就行了
需要注意的就是,安卓10以上的系统,提高了对剪切板的访问权限,可能你的手机不让autojs把抓取的分数,粘贴到剪切板上。
这一点要尤为注意。
完整代码
var x =bounds(374,345,706,507).findOne(2000);//找到分数控件
var y =x.text();
setClip("今日学习分数:"+ y);//复制分数
sleep(1000);
home();//回到系统桌面
desc("微信").findOne(2000).click();//打开微信
sleep(1000);
click(543,2258);//点击输入框
paste();//粘贴分数
sleep(200);
click(979,1303);//找到发送位置的坐标
每天都是下了班🚌,
拖着疲惫的身躯😴,
分享我的创作的🔑。
希望大家能点个关注📌,
或者赞赏支持下作者🎁,
激励我去努力的创作🤭。