升学 E 网通 (EWT360) 试卷部分外挂 (选择题)

升学E网通试卷选择题答案页面跳转器

< 脚本升学 E 网通 (EWT360) 试卷部分外挂 (选择题)的反馈

提问/评论

§
发表于:2022-08-10

脚本很好 但还可以更好

API跳转的页面内容为JSON 如果能parse一下将更方便

据我所知 现在已经无法直接获取rightAnswer了 (也有可能是鄙人技艺不精

但是 仍可以在解析中搜索答案

例如 第一题的解析 路径为.data.questions[0].analyse

这是我不久前写的用户脚本:EWT 试题分析获取 - Beta 可能有部分学习作用 (鄙人取变量名可能有些难以读懂 毕竟只是小脚本)

如果能匹配 例如 部分解析的答案可能为 故选C。 这种形式

那么可以使用 analyse[analyse.indexOf('故选') + 2] 来匹配

本示例中 返回结果为 'C'

至于自动选择功能 你所参照的原作者 zxoi y
已经给出了代码: 升学 E 网通 (EWT360) 试卷自动完成 (选择题) - 代码

    function autoCompleteProblems(probs){
        if (probs == null || probs == undefined){
            return;
        }
        for (let prob of probs){
            autoCompleteProblems(prob.childQuestions);
            if (prob.rightAnswer == null){
                continue;
            }
            let div = $("#ewt-question-" + prob.id);
            $(".option-item", div).each(function(index, item) {//清空所有选项
                if ($(item).hasClass("selected")){
                    $(item).click();
                }
            });
            for (let right of prob.rightAnswer){//选择正确选项
                $(".option-item[data-reactid$='$" + right + "']", div).click();
            }
        }
        $("#ewt_auto").text("完成!");
    }

由于我没有足够的考试 不能试验这段代码的有效性 但就鄙人看来 其思路完全正确

将原代码中的变量right 替换为上述找到的答案 如

fetch("https://web.ewt360.com/customerApi/api/studyprod/web/answer/paper?paperId=" + getQueryVariable("paperId") + "&platform=" + getQueryVariable("platform") + "&bizCode=" + getQueryVariable("bizCode") + "&reportId=0&isRepeat=0")
  .then(r => r.json())
  .then(res => {
      // 清空所有选项
      $(".option-item", div).each(function(index, item) {
        if ($(item).hasClass("selected")){
          $(item).click();
        }
      });
      // 选择正确选项
      $(".option-item[data-reactid$='$" + res.data.questions[0].analyse[res.data.questions[0].analyse.indexOf('故选') + 2] + "']", div).click();
    }
  );

即可实现自动选择

希望能继续改进 加油

发表回复

登录以发表回复。