提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
学校的校园网经常断网,每次都要手动点几下来重新联网。手机挂着软件也是经常被杀后台,离开宿舍也不方便,容易导致宿舍断网。想到本人有台旧手机或许可以用来挂着广东校园,解放其他人的手机,再通过autojs来写一个断网自动点击相应按钮来重连的脚本,这样就能极大程度上减少操作繁琐,不用担心断网没有及时重连的问题。
本人没有学习过js相关语言,实验过程也是边学边做,最终记录此次实验过程。
一、最终成果
思路是检测到断网后,退出整个应用再重新打开,之后点击登录
auto.waitFor();//等待无障碍服务启动
toast("开始运行");
while(true){
desc("确定").waitFor();//等待“确定“字符出现,即检测是否断网
toast("已断网");
openAppSetting(getPackageName("广东校园"));//打开广东校园设置
while(!click("强行停止"));
while(!click("确定"));
launchApp("广东校园");
desc("点我登录").waitFor();//等待”点我登录“字符出现
desc("点我登录").findOne().click();//点击”点我登录“字符
toast("已点击登录");
}
二、实验过程
思路一
广东校园断网后会出现网络已断开的提示框,且下方有确定按钮,因此将是否出现”确定“字符作为断网的判断条件
desc("确定").waitFor();
在校园网断开后,点击确定,再点击登录上网即可恢复网络。
desc("确定").findOne().click();
desc("登录上网").findOne().click();
一开始按照这个思路很快就写完了脚本,但测试的时候发现“确定”按钮点击不生效
在布局分析界面看到“确定”按钮上有一个空白的控件,且是不可点击的,猜测是这个空白控件导致的“确定”按钮点击失效。
由于本人使用的旧手机来实验,安卓版本只有5,不支持click(x,y)
这种简单无脑的点击操作,因此只能另找方法。
于是乎想到改用bounds值来点击
查看"确定“按钮的控件信息,找到bounds值
bounds(291,1026,408,1098).click();
测试后依旧无用,猜测是点击范围太大,应该选择”确定”按钮下边那一块没被挡住的小长方形的,但结果仍然不行。
思路二
在经过基于控件的操作方式来测试仍然多次不成功之后,我尝试更换一种方法。既然“确定”按钮用了很多方法都点击不到,那么就干脆把整个广东校园给关闭掉,然后重新打开。
一开始是想到两步,切出后台,上滑关闭软件
recent();//切后台
swipe(300,1000,300,500,1000);//上滑,用1秒钟从坐标(300,1000),滑动到(300,500)
结果在滑动的时候报错,提示安卓7以下不支持滑动操作。
于是乎换了另一种方法,打开软件设置,点击强行停止,然后重启软件,最终测试终于成功
openAppSetting(getPackageName("广东校园"));
while(!click("强行停止"));
while(!click("确定"));
launchApp("广东校园");
desc("点我登录").waitFor();
desc("点我登录").findOne().click();