js自动评教

在学校这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()就把所有的题选上了


结果:


然后提交,下次运行这个函数,再到控制台按上键调出历史回车就行了

至于后续怎么全自动评教有空再说吧,大三狗时间伤不起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值