赞
踩
autojs - vs Code - Android
本程序只包含了最后的自动答题模块,前面打开的过程很简单懒得写了,需要的可以参考刷视频篇,根据控件或坐标模拟点击即可。
本程序只达到自用的程度,只是为了磨练技术,不要完全依赖程序答题,答题出错并不会有提示。
将电脑题库txt文档传到手机上,一个方便的做法是
将爬取的文档直接放在本脚本文件的文件夹内,然后按照保存脚本文件的方法保存即可
按ctrl+shift+p,点击 save on device,即可保存到手机,会存为js文件
地址为和脚本所在的地址一样,使用log(files.cwd())可打印查看
files.cwd():返回脚本的"当前工作文件夹路径"。
再从文件中读取,返回的是字符串,而不是JSON数据。
所以需要用eval把它转化为JSON形数据
参考https://blog.csdn.net/angus_17/article/details/7181099
代码如下:
path="/storage/emulated/0/脚本/行政.js"
var tiku =files.read(path)
pattern=/[`~!@#$^&*()=|';'“”\\\[\]\.<>\/?~!@#¥……&*()——|【】';:'。,、?\s]/g;
tiku = tiku.replace(pattern,"")
tiku = eval("(" + tiku + ")");
每章有五道题,for循环五次,之后提交
for(n=0;n<5;n++) { //获取题目 var wenti = className("android.view.View").depth("8").drawingOrder("0").indexInParent("2").findOnce().text() //对获取的题目进行处理,去除所有特殊字符 pattern=/[`~!@#$^&*()=|{}':;'“”,\\\[\]\.<>\/?~!@#¥……&*()——|{}【】';:""'。,、?\s]/g; wenti = wenti.replace(pattern,"") //并没有模糊匹配处理 sleep(1000) //匹配题目,获取答案,赋值daan //。3放在这里。 //点击答案 click(daan) //如果答案里有特殊字符就会出错 //可以用获取题目的方式获取答案,然后处理选项,进行匹配,坐标点击 //现在懒得处理了,印象中只有一道题,选项人名中有个破折号,会点不了,先不管了 sleep(2000) click("下一题") sleep(2000) } click("提交作业") sleep(1000) click("确定") exit()
本来是想写模糊匹配的,毕竟题目一字不差可能会有难度,但是模糊匹配略有点难,还没学会,等搞清楚了再写。
这里的处理是将题库里 问题答案的特殊字符去掉,同时将提取的问题 中的特殊字符去掉,这样问题就会完全一样,可以进行匹配。
Object.keys(tiku)[i]就是先把所有问题变成数组,然后用下标顺序访问
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组。
参考JS获取对象键值对中key值的方法
str.indexOf(wenti)
该方法将从头到尾地检索字符串 str,看它是否含有子串 wenti。如果没有找到,将返回 -1。
i=0 flag = 0 //为1说明出错 while(Object.keys(tiku)[i]){ if (Object.keys(tiku)[i].indexOf(wenti)>-1){ //if(mohuMatch(Object.keys(tiku)[i], wenti))还没有写出来 flag = 1 var daan = tiku[Object.keys(tiku)[i]] console.log(daan) sleep(3000) break; } i++; } if(flag == 0){ console.log("未找到该题") sleep(2000) }
还没测试过,有问题可以留言,完整代码放在gitee
会爬简单的网页了,虽然写出来就那么几行代码,但是其中学习的积累可是不少,至少算是勉强入门了;
自认熟练掌握了replace()的一种用法,这个真是特别好用,不仅可以去除替换某一特定的字符,还可以改变整体的格式,最厉害的是可以一键去除特殊字符;
最后在电脑文件传手机,读取手机js文件,怎么将读取的字符串变为能匹配的js键值对可是花了我很大功夫呢,虽然现在看来都是很简单的问题了,但是对于当时的我,一点门窍都摸不到。而且可能会有更简单的办法实现,我就抛砖引玉,希望有大佬来指点一下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。