Greasy Fork

Greasy Fork is available in English.

wsxy_handleExams

网上学院函数库:自动答题

当前为 2020-02-02 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/395966/769508/wsxy_handleExams.js

// ==UserScript==
// @name          wsxy_handleExams
// @namespace     Vionlentmonkey
// @version       0.2
// @description   网上学院函数库:自动答题
// @grant         none
// ==/UserScript==

const handelCourseExamList = () => {
  const exams = document.querySelectorAll('a[href="#"][onclick^=openWindowFullScreen]');
  for (let exam of exams) {
    const examURL = location.origin + '/sfxzwsxy/' + exam.getAttribute('onclick').split("'")[1];
    const coursePk = examURL.split('course_pk=')[1].split('&')[0];
    const answerURL =
      location.origin +
      '/sfxzwsxy//jypxks/modules/train/course/subject_list.jsp?coursePk=' +
      coursePk +
      '&op=view';
    exam.href = examURL;
    exam.onclick = '';
    exam.target = '_blank';
    exam.addEventListener('click', () => {
      GM_openInTab(answerURL, true);
      GM_notification('答案已同步在隔壁标签页打开。\n暂请考试结束后手动关闭。');
    });
  }
};

const autoExamineTest = async () => {
  // 本考试所有试题
  let topics = document.getElementsByClassName('topic-tms');
  for await (let topic of topics) {
    // 题号
    let pkid = topic.querySelector('a[pkid]').getAttribute('pkid');
    // 本题答案
    let subjectDataMap = await getSubjectData(pkid);
    // 本题选项
    let options = topic.querySelectorAll('.tms-Right-wrong > p > a');
    for (let option of options) {
      let optionText = option.textContent.trim();
      if (subjectDataMap.get('questionType') === '判断题') {
        if (option.textContent.trim() === subjectDataMap.get('judgementAnswer')) {
          option.click();
        }
      } else {
        // 选择题选项内容带着序号与空格,如“A ”,故获取第三个字符开始的子串
        if (subjectDataMap.get(optionText.substring(2)) === '是') {
          option.click();
        }
      }
    }
  }
  // 交卷
  if (document.getElementsByClassName('subline _submit').length === 1) {
    document.getElementsByClassName('subline _submit')[0].click();
  }
  // 确认
  if (document.getElementsByClassName('layui-layer-btn0').length === 1) {
    document.getElementsByClassName('layui-layer-btn0')[0].click();
  }
};