传智网课答题(只支持大部分选择题)

传智教育答题

// ==UserScript==
// @name         传智网课答题(只支持大部分选择题)
// @namespace    https://stu.ityxb.com/writePaper/busywork/*
// @namespace    https://stu.ityxb.com/writePaper/exam/*
// @version      2.1
// @description  传智教育答题
// @author       HCG_Sky(本人二开原作者:土豆)
// @connect      *
// @match        https://stu.ityxb.com/writePaper/busywork/*
// @match        https://stu.ityxb.com/writePaper/exam/*
// @grant        GM_xmlhttpRequest
// ==/UserScript==



var tibody;//题目数组
var total = 0;//题目总数量
var index = 0;//搜题索引自动增加

window.onload = function(){
    tibody=document.getElementsByClassName("questionItem question-item-box");
    total = tibody.length;
    answer(tibody[index]);//传入每道题


    // 创建一个新的 div 元素
    let newDiv = document.createElement("div");
    let p1 = document.createElement("p");
    let p2 = document.createElement("p");
    // 给它一些内容
    let Content_1 = document.createTextNode("原作者:土豆 | 本人是二次开发|只能搜选择题|自动答题功能不完善|有些自己看着选一下");
    let Content_2 = document.createTextNode("修复问题:接口失效、判断题不能自动答题、目前已支持考试");
    // 添加文本节点 到这个新的 div 元素
    p1.appendChild(Content_1);
    p2.appendChild(Content_2);
    newDiv.appendChild(p1);
    newDiv.appendChild(p2);
    newDiv.style.position='fixed';
    newDiv.style.backgroundColor='#ffc900'
    newDiv.style.fontSize='20px';
    document.querySelector("#beginHeaderNav").appendChild(newDiv);
    newDiv.style.top='60px';
}

function answer(ti){
    GM_xmlhttpRequest({//油猴脚本提供的异步函数
        method: 'POST',
        url: 'https://cx.icodef.com/wyn-nb',//题库接口 https://cx.icodef.com/wyn-nb
        headers: {
            'Content-type': 'application/x-www-form-urlencoded',
            'Authorization':' ',//这里需要自己去关注公众号 一之哥哥 获取 token 填入即可使用
        },
        data: 'question='+ encodeURIComponent(ti.getElementsByClassName("question-title-box")[0].innerText),
        timeout: 2000,
        onload:function(xhr){
            //自动选择答案
            let json=JSON.parse(xhr.responseText);
            let daan=json.data;
            if(json.code==-1){
                daan="答案未找到";
            }
            // console.log(xhr.responseText.code);
            let answerarray=daan.split('#');//答案数组

            let daanlength=ti.getElementsByClassName("radio_item question-option-item-box").length;//多少个选项

            for(let i=0;i<daanlength;i++){
                for(let i2=0;i2<answerarray.length;i2++){
                    if(answerarray[i2] == '正确'){
                        answerarray[i2] = '对';
                    }
                    if(answerarray[i2] == '错误'){
                        answerarray[i2] = '错';
                    }
                    if(ti.getElementsByClassName("radio_item question-option-item-box")[i].innerText.split('、')[1] == answerarray[i2]){
                        ti.getElementsByClassName("radio_item question-option-item-box")[i].firstElementChild.click();
                    }
                    if(ti.getElementsByClassName("radio_item question-option-item-box")[i].innerText == answerarray[i2]){
                        ti.getElementsByClassName("radio_item question-option-item-box")[i].firstElementChild.click();
                    }
                }
            }

            //显示答案
            let newdaan=' ';
            for(let i=0;i<answerarray.length;i++){
                newdaan=newdaan+'<br>'+answerarray[i];
            }
            ti.getElementsByClassName("question-title-box")[0].innerHTML += "<br>答案:"+newdaan;
            if(index < total - 1)//继续搜索接下来的题
            {
                setTimeout(function (){
                    index = index + 1;
                    answer(tibody[index]);
                }, 1000);

            }
        }
    })
}