【答案显示|自动答题】成都东软学院(大连东软应该也可以)||4S平台试卷答案显示||一键答题

进入题目后,右上角会显示题目的答案,照着选就行了

// ==UserScript==
// @name         【答案显示|自动答题】成都东软学院(大连东软应该也可以)||4S平台试卷答案显示||一键答题
// @license      MIT
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  进入题目后,右上角会显示题目的答案,照着选就行了
// @author       You
// @match        *://sep.study.neuedu.com/#/paper/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // 定义全局变量
    var getData = null;

    // 创建悬浮窗的函数
    function createFloatingWindow() {
        var window = document.createElement('div');
        window.id = 'floatingWindow';
        window.style.position = 'fixed';
        window.style.top = '10px';
        window.style.right = '10px';
        window.style.width = '300px';
        window.style.height = '400px';
        window.style.backgroundColor = 'white';
        window.style.border = '1px solid black';
        window.style.zIndex = '9999';
        window.style.overflow = 'auto';
        document.body.appendChild(window);
        // 添加列表项
        var title = document.createElement('h2');
        title.textContent = '试卷信息';
        window.appendChild(title);
        // 添加提示信息
        var info = document.createElement('p');
        info.textContent = '试卷信息加载中...';
        window.appendChild(info);
        // 题目信息列表
        var list = document.createElement('ul');
        window.appendChild(list);
        // 创建按钮
        var button = document.createElement('button');
        button.textContent = '一键答题';
        button.style.marginTop = '10px';
        button.addEventListener('click', clickAnswerButton);
        window.appendChild(button);
        // 点击关闭按钮的事件
        var closeButton = document.createElement('button');
        closeButton.textContent = '关闭悬浮窗';
        closeButton.style.marginTop = '10px';
        closeButton.style.float = 'right';
        closeButton.addEventListener('click', closeFloatingWindow);
        window.appendChild(closeButton);
        return window;
    }
    
    // 关闭悬浮窗的函数
    function closeFloatingWindow() {
        var floatingWindow = document.getElementById('floatingWindow');
        floatingWindow.parentNode.removeChild(floatingWindow);
    }

    function ansButtonClick(ansPath) {
        setTimeout(() => {
          document.querySelector(ansPath).click();
          callback(">>>"+ansPath);
        }, Math.ceil(Math.random() * 3000));
    }

    // 点击按钮的函数
    function clickAnswerButton() {
        var data = getData;
        //setTimeout(function(){
        for (var type in data['data']){
            for(var question in data['data'][type]['studentPartQuestionList']){
                var questionJson = data['data'][type]['studentPartQuestionList'][question];
                for(var ans in questionJson['selectReferenceAnswerList']){
                    for(var choose in questionJson['questionOptionList']){
                        if(questionJson['selectReferenceAnswerList'][ans] == questionJson['questionOptionList'][choose]['id']){
                            var ansPath = "#questionId"+ questionJson['markId']  +" > div > div:nth-child(2) > div:nth-child(3) > div > label:nth-child("+ String(choose-(-1)) +")";
                            // const startTime = performance.now();
                            // while (performance.now() - startTime < 100) {}                            console.log(ansPath);
                            // document.querySelector(ansPath).click();
                            ansButtonClick(ansPath,(result)=>{
                                console.log(result);
                            })
                        }
                    }
                }
            }
        }
        //},0);
    }

    // 题目列表删除函数
    function removeListInfo() {
        var floatingWindow = document.getElementById('floatingWindow');
        // 将提示更改为'试卷信息已经完成加载'
        var info = floatingWindow.getElementsByTagName('p')[0];
        info.textContent = '试卷信息已经完成加载';
        // 删除列表
        var list = floatingWindow.getElementsByTagName('ul')[0];
        while (list.firstChild) {
            list.removeChild(list.firstChild);
        }
    }

    // 题目列表添加函数
    function addListInfo(data) {
        var floatingWindow = document.getElementById('floatingWindow');
        // 添加一项data到ul末尾 
        var list = floatingWindow.getElementsByTagName('ul')[0];
        var li = document.createElement('li');
        li.textContent = data;
        list.appendChild(li);
        
    }

    // 发起GET请求并处理响应的函数
    function fetchPaperInfo() {
        // 获取当前URL的哈希部分
        var hash = window.location.hash;
        // 去除哈希前的'#'符号
        var hashContent = hash.replace(/^#/, '');
        // 以'/'分割字符串
        var parts = hashContent.split('/');
        // 获取第一项和第二项,注意检查数组长度以避免越界
        var firstPart = parts[2] || ''; // 第一项
        var secondPart = parts[3] || ''; // 第二项
        //console.log('第一项:', firstPart);
        //console.log('第二项:', secondPart);
        var params = 'candidateId='+firstPart+'&arrangementId='+secondPart;
        var token = localStorage.getItem('token'); // 从本地存储中获取Token
        var xhr = new XMLHttpRequest();
        xhr.open('GET', 'http://sep.study.neuedu.com/se-tool-gateway/biz/test/student/test/paper/info?' + params, true);
        xhr.setRequestHeader('Token', token); // 设置请求头中的Token
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var response = JSON.parse(xhr.responseText);
                getData = response;
                displayPaperInfo(getData);
            } else if (xhr.readyState == 4) {
                document.getElementById('floatingWindow').innerHTML = 'Failed to fetch data: ' + xhr.status;
            }
        };
        xhr.send();
    }

    // 显示试卷信息的函数
    function displayPaperInfo(data) {
        var testNum = 0;
        removeListInfo();
        for (var type in data['data']){
            addListInfo(data['data'][type]['partName']);
            for(var question in data['data'][type]['studentPartQuestionList']){
                testNum++;
                var questionJson = data['data'][type]['studentPartQuestionList'][question];
                //var result = "题目:"+questionJson['stem']+" 答案:";
                var testTitle = questionJson['stem'];
                if(testTitle.length>15){
                    testTitle = testTitle.substring(0,14)+"...";
                }
                addListInfo(testNum+"、题目:"+testTitle);
                for(var ans in questionJson['selectReferenceAnswerList']){
                    for(var choose in questionJson['questionOptionList']){
                        if(questionJson['selectReferenceAnswerList'][ans] == questionJson['questionOptionList'][choose]['id']){
                            //result += choose['questionOption']+"</br>";
                            var _listShow = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
                            addListInfo(_listShow[choose]+"."+questionJson['questionOptionList'][choose]['questionOption']);
                        }
                    }
                    //console.log(ans);
                }
            }
        }
    }

    // 页面加载完成后执行
    window.addEventListener('load', function() {
        var floatingWindow = createFloatingWindow();
        fetchPaperInfo();
    });
})();