前言

申请某线上机器权限之前要考试。测试后发现该考试题目和选项固定,又因为题目数量很多,正式帐号重做比较麻烦,于是想用脚本自动填充。这篇文章仅作大致记录,可以进行相关扩展。利用python获取答案以及其他细节从略。

另外,浏览器使用Chrome.



单选框


上面是一个四个单选框。以A的选择框为例,右键—审查元素,可以看到关键部分:

<input type="radio" name="question[1]" rel="1" value="A" autocomplete="off">

接下来利用js,在开发者工具中选择Console,逐行输入以下代码,即可依次选中单选题的ABCD:

var single = document.getElementsByName("question[1]");
single[0].checked = 1;
sinlge[1].click();
sinlge[2].click();
single[3].checked = 1;

注:Name是唯一的。



多选框


上面是五个多选框。首先也是审查元素,关键代码如下:

<input type="checkbox" name="question[2][0]" rel="2" value="A" autocomplete="off">

在上一节我们看到,单选题中可以利用.click()或者.checked = 1两种方式来勾选,效果似乎相同。然而在多选框中,这两种方式就有区别了。从名字来看,前者是模拟鼠标点击,后者是直接编辑状态。在多选框中,如果先勾选一个框,接着再点一下鼠标(相当于两个.click()),就是取消勾选。如果网页没有缓存,可以使用如下方法:

document.getElementsByName("question[2][0]")[0].click();
document.getElementsByName("question[2][1]")[0].checked = 1;
document.getElementsByName("question[2][2]")[0].checked = 1;
document.getElementsByName("question[2][3]")[0].checked = 1;
document.getElementsByName("question[2][4]")[0].click();

如果缓存了,可能会出现有的框已经被选中的情况。这时如果用.click()就会取消选中,而用.checked = 1则不受影响。所以需要按照实际情况使用。

有了以上基础,就能扩展出很多自动化脚本啦~


(END)