您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
学习强国,自动答题,每题,每周,专题自动答题,本代码仅用于学习js所用,切勿用作违法用途,转载请注明出处。
// ==UserScript== // @name 学习强国 // @namespace http://www.mtnlmm.cn/ // @version 0.6.2 // @description 学习强国,自动答题,每题,每周,专题自动答题,本代码仅用于学习js所用,切勿用作违法用途,转载请注明出处。 // @author 馒头拿来摸摸 // @match https://pc.xuexi.cn/points/exam-practice.html* // @match https://pc.xuexi.cn/points/exam-weekly-detail.html* // @match https://pc.xuexi.cn/points/exam-paper-detail.html* // @match https://pc.xuexi.cn/points/login.html* // @grant none // @license AGPL License // ==/UserScript== (function() { 'use strict'; // Your code here... function doit() { var nextAll=document.querySelectorAll(".ant-btn"); var next=nextAll[0]; if(nextAll.length==2)//俩按钮,说明有个按钮是交卷。 { next=nextAll[1]; } if(next.disabled) { document.querySelector(".tips").click(); //所有提示 var allTips=document.querySelectorAll("font[color=red]"); //单选多选时候的按钮 var buttons=document.querySelectorAll(".q-answer"); //填空时候的那个textbox,这里假设只有一个填空 var textboxs=document.querySelectorAll("input"); //问题类型 var qType= document.querySelector(".q-header").textContent; qType=qType.substr(0,3) switch(qType) { case"填空题": //第几个填空 var mevent=new Event('input',{bubbles:true}); if( textboxs.length>1)//若不止是一个空 { //填空数量和提示数量是否一致 if(allTips.length==textboxs.length) { for(let i=0;i< allTips.length;i++)//数量一致,则一一对应。 { let tip=allTips[i]; let tipText=tip.textContent; if(tipText.length>0) { //通过设置属性,然后立即让他冒泡这个input事件. //否则1,setattr后,内容消失. //否则2,element.value=124后,属性值value不会改变,所以冒泡也不管用. textboxs[i].setAttribute("value",tipText); textboxs[i] .dispatchEvent(mevent); // break; } } } else { //若填空数量和提示数量不一致,那么,应该都是提示数量多。 if(allTips.length>textboxs.length) { var lineFeed=document.querySelector('.line-feed').textContent;//这个是提示的所有内容,不仅包含红色答案部分。 let n=0;//计数,第几个tip。 for(let j=0;j<textboxs.length;j++)//多个填空 { let tipText=allTips[n].textContent; let nextTipText=""; do{ tipText+=nextTipText; if(n<textboxs.length-1) { n++; nextTipText=allTips[n].textContent; } else { nextTipText="结束了,没有了。"; } } while(lineFeed.indexOf(tipText+nextTipText)); textboxs[j].setAttribute("value",tipText); textboxs[j] .dispatchEvent(mevent); } } else { //提示数量少于填空数量,不好拆分答案,想加自己加。 } } } else if(textboxs.length==1) {//只有一个空,直接把所有tips合并。 let tipText=""; for(let i=0;i< allTips.length;i++) { tipText += allTips[i].textContent; } textboxs[0].setAttribute("value",tipText); textboxs[0] .dispatchEvent(mevent); break; } else { //怕有没空白的情况。 } break; case "多选题": for(let js=0;js<buttons.length;js++)//循环选项列表。用来点击 { let cButton=buttons[js]; for(let i=0;i< allTips.length;i++)//循环提示列表。 { let tip=allTips[i]; let tipText=tip.textContent; if(tipText.length>0)//提示内容长度大于0 { let cButtonText=cButton.textContent;//选项按钮的内容 //循环对比点击 if(cButtonText.indexOf(tipText)>-1||tipText.indexOf(cButtonText)>-1) { cButton.click(); break; } } } } break; case "单选题": if(true) { //把红色提示组合为一条 let tipText=""; for(let i=0;i< allTips.length;i++) { tipText += allTips[i].textContent; } if(tipText.length>0) { //循环对比后点击 for(let js=0;js<buttons.length;js++) { let cButton=buttons[js]; let cButtonText=cButton.textContent; //通过判断是否相互包含,来确认是不是此选项 if(cButtonText.indexOf(tipText)>-1||tipText.indexOf(cButtonText)>-1) { cButton.click(); break; } } } } break; default: break; } document.querySelector(".tips").click(); } else { if(next.textContent!="再练一次"&&next.textContent!="再来一组"&&next.textContent!="查看解析"){ next.click(); } } }; window.setInterval(doit, 3000); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址