新的一輪教學評價又開始了,每門課要點十幾次,課程多的話可能得點一兩百次,想起去年有大佬做過自動評價的腳本,但不能用了,因為教務系統的代碼有更改,而且不能全滿分了,所以照著大佬的代碼摸索了一下,改出了能用的腳本,不懂代碼的話可以看第一部分直接上手用,懂一點代碼而且有興趣的話可以看一下第二部分,了解一下如何做這樣的腳本,
一、授人以魚
以下以360瀏覽器為例,其它瀏覽器大同小異,
1.首先打開教務系統,進入到學生評價頁面,如下圖,如果課多的話,改一下每頁顯示的課程數,盡量一個頁面顯示完所有課,

2.按F12進入開發者模式(筆記本可能需要按fn+F12),或者右鍵-審查元素也可以進入開發者模式

3.切換到第二項console(有的瀏覽器譯為終端),如下圖的1

4.復制下面的代碼,粘貼到上一步的console下面的輸入區域(即上圖的2),然后回車即可一鍵評價
var num = document.getElementById("tempGrid").rows.length-1
console.log('共'+num+'門課')
var i=1;
var timer = setInterval(() => {
if(i == num+1) {
console.log('評價結束')
clearInterval(timer)
}else{
console.log('開始評第'+i+'門課')
var body = document.getElementById(i++)
if(body!=null) body.click();
setTimeout(() => {
var radios = document.getElementsByClassName('radio-pjf');
var j=0;
var r=Math.floor(Math.random()*5)+3;
[...radios].forEach((item) => {
if(r==j){
if(item.getAttribute("data-dyf")=="4") {
item.checked = true
j++
}
}else{
if(item.getAttribute("data-dyf")=="5") {
item.checked = true
j++
}
}
})
document.getElementById('btn_xspj_bc').click()
document.getElementById('btn_xspj_tj').click()
console.log('第'+(i-1)+'門課已提交')
},3000)
}
},6000)
二、授人以漁
這部分我分享一下我是如何做出這個腳本的,以后如果我的代碼失效的話,大家可以知道怎么改,
1.首先,我們知道,對獲取到的html元素呼叫click()方法可以模擬一次點擊,所以我們首先需要獲取到左側課程的HTML元素,

2.通過分析這個頁面的HTML原始碼,我發現在原始碼里,每門課都有一個id,而且id是從1開始的,所以我們可以使用document.getElementById(id)這個方法獲取到每門課的HTML元素

3.在點擊了左側的課程之后,右側出現了評分表,還是通過分析代碼,評分表的classname是radio-pjf,通過document.getElementsByClassName('radio-pjf');可以獲得評分表的HTML物件,,我們需要選10個5分和1個4分,評分項中教學程序權重較低,我們可以把4分選在這里,通過一個亂數來實作(這部分是參考別人的代碼)
var radios = document.getElementsByClassName('radio-pjf');
var j=0;
var r=Math.floor(Math.random()*5)+3;
[...radios].forEach((item) => {
if(r==j){
if(item.getAttribute("data-dyf")=="4") {
item.checked = true
j++
}
}else{
if(item.getAttribute("data-dyf")=="5") {
item.checked = true
j++
}
}
})
5.把分數選完之后,我們需要保存提交,分析一下原始碼,找到【保存】和【提交】這兩個按鈕的代碼,發現它們的id分別是btn_xspj_bc、btn_xspj_tj,使用document.getElementById()獲取元素并點擊即可
document.getElementById('btn_xspj_bc').click()
document.getElementById('btn_xspj_tj').click()
結語
主要是需要分析一下原始碼,知道如何獲取HTML元素,如果以后教務系統的代碼和規則有更改的話,稍微改一下我的代碼應該就能用了,不過奇怪的是,不可以通過獲取左側課程的時候不能通過for回圈var body = document.getElementById(i++)來獲取相應課程,學藝不精不知道是為什么,這里是參考大佬的代碼,
參考
https://mubu.com/doc/faqLPTsU50
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/236096.html
標籤:其他
下一篇:聯合查詢的Sql陳述句怎么寫
