在学校这3年,年年都需要评教,而且还有一些不会进内网的同学找帮忙评教。一般每个学期都有11门课以上的课,每门课都有16个选项。就要点11*(16+3)下,如果不是课太差,谁会给差评呢~,所以有点感觉评教有点浪费时间。作为软件工程学生能不能省去那么多次的点击呢。
评教页面:
怎么将他们批量的选上优呢,两种方法一种是构建post请求,一种是模拟人去点击。
我们都知道,单选一般用radio。我们要使用最通用的方法就是模拟人去点击,点击会发生什么呢,按钮被选上嘛。我们用js去选按钮就好了。
我们审查元素发现果然是这样,那么怎么将他们选择呢,网上查找了一下方法(这是最快的)。
直接贴实现代码:
//选择radio https://bbs.csdn.net/topics/392157640?page=1
function clickradio(){
//全选优
for (var i=0;i<15;i++){
var name="GVpjzb$ctl"+((2+i)>9?2+i:"0"+(2+i))+"$RaBxz";
var xradio = document.getElementById('IFRAME1').contentWindow.document.getElementsByName(name);
for(var j=0;j<xradio.length;j++){
if(xradio[j].value === "5"){
xradio[j].checked = true;
break;
}
}
}
//最后一个良
var name="GVpjzb$ctl17$RaBxz";
var xradio = document.getElementById('IFRAME1').contentWindow.document.getElementsByName(name);
for(var j=0;j<xradio.length;j++){
if(xradio[j].value === "4"){
xradio[j].checked = true;
break;
}
}
}
我发现radio组命名都是GVpjzb$ctl02$RaBxz开始,并往下延伸15个,那么我们生成这个String列表
for (var i=0;i<15;i++){
console.log("GVpjzb$ctl"+((2+i)>9?2+i:"0"+(2+i))+"$RaBxz");
}
然后获取元素,遍历值为优的checked值改成true就可以了
但是有一个问题,他这个页面使用了iframe。
直接document.getElementByName()是可能获取不到的。
所以我们先获取到评价主体的iframe的id使用document.getElementById(iframeid)再找名字就行了
问题解决
我们写好这个clickradio函数以后在评教界面按F12调出控制台,进入Console(控制台页面),输入这个函数以便调用。
然后当要点击的时候执行clickradio()就把所有的题选上了
结果:
然后提交,下次运行这个函数,再到控制台按上键调出历史回车就行了
至于后续怎么全自动评教有空再说吧,大三狗时间伤不起