适合西交宝宝体质的一键评教

小白向

期末又到了,又有一堆的评教,所以就简单的自动化一下。
没什么技术含量,js 获取 dom 元素模拟点击事件,,,随便写写。
class 估计很容易变,可能过段时间需要改改。

操作

代码(需要复制张贴的部分)

// 获取所有题目
var questions = document.getElementsByClassName("sc-panel-thingNoImg-1-header")
n = questions.length
console.log(n)
for (i = 1;i < n ;i++) {
    if (i == n - 1){

        var findText = questions[i].nextElementSibling
        // 最后一个题是填空,内容自己改
        result = findText.getElementsByClassName("bh-txt-input__txtarea")[0]
        result.value = "讲的很好,希望考试不要太难"
    } else {
        // 默认选择完全符合,想改的话换一下下面的下标 [0]
        var choices = questions[i].nextElementSibling
        var choice = choices.getElementsByClassName("bh-radio-label")[0]
        choice.click()
    }
}

btn1 = document.getElementsByClassName("bh-btn bh-btn-success bh-btn-large")[0]


// 提交
setTimeout(()=>{
    btn1.click()
    btn2 = document.getElementsByClassName("bh-dialog-btn bh-bg-primary bh-color-primary-5")[0]
},500)
// 时间间隔 1000ms

// 确定
setTimeout(()=>{
    btn2.click()
},1000)

10 Likes

也可以用 Selenium

1 Like

:thinking: 好主意。计划先收集一些。

上了两年学了还没评过教,所以评教有什么用吗

支持,昨天一次评教了 50 个人都要没了

2 Likes


可能会有一点点影响:thinking:

我建了一个 本站的 GitHub 组织 xjtumen,可以加入这个组织。

这个仓库专门收集这类脚本:
https://github.com/xjtumen/automation
欢迎提交 Pull Request (PR) 上传你的脚本。

4 Likes

确认随机点不会出问题吗?:joy:

听老师说,部分评教的后台是实名的

油猴脚本
自动评教

油猴上有评教的

默认全选满意,也可以改成随机。

最近又用上了。更新后来写的另一个版本。
停在有一堆评教的那个页面,开始前会等待 7 秒。
不用自己一个一个点了,完全自动化。

function chooseone(){
    fulllist = document.getElementsByClassName("card-bottom")
    for (let i = 0;i <fulllist.length;i++) {
        startbtn = fulllist[i].getElementsByTagName("span")
        if (startbtn.length == 2) {
            startbtn[0].click();
            setTimeout(fill,500)
            console.log("开始回答")
            break;
        }
    }
}

function fill(){
    var questions = document.getElementsByClassName("sc-panel-thingNoImg-1-header")
    n = questions.length
    console.log(n)
    if (n == 0) {
        console.log("未找到问题")
        return -1;
    }
    for (i = 1;i < n ;i++) {
        console.log(`回答第:${i}题`)
        if (i == n - 1){
    
            var findText = questions[i].nextElementSibling
            // 最后一个题是填空,内容自己改
            result = findText.getElementsByClassName("bh-txt-input__txtarea")[0]
            result.value = "讲的很好,希望考试不要太难"
        } else {
            // 默认选择完全符合,想改的话换一下下面的下标 [0]
            var choices = questions[i].nextElementSibling
            var choice = choices.getElementsByClassName("bh-radio-label")[0]
            choice.click()
        }
    }
    
    btn1 = document.getElementsByClassName("bh-btn bh-btn-success bh-btn-large")[0]
    
    
    // 提交
    setTimeout(()=>{
        btn1.click()
        console.log("提交中")
        btn2 = document.getElementsByClassName("bh-dialog-btn bh-bg-primary bh-color-primary-5")[0]
    },500)
    // 时间间隔 1000ms
    
    // 确定
    setTimeout(()=>{
        console.log("确定")
        btn2.click()
    },1000)
}

// chooseone();
setInterval(chooseone,7000)
3 Likes