itest

刷itest自助学习的填空和选择题。

  1. // ==UserScript==
  2. // @name itest
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description 刷itest自助学习的填空和选择题。
  6. // @author xiaoyan
  7. // @match *.unipus.cn/itest/itest/s/jcxl/jcxl*
  8. // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
  9. // @grant none
  10. // @license 可以修改刷题速度speed,单位是ms
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. var dein;
  15. var num = 0,
  16. temjishu = 0,
  17. initalnum = 0;
  18. var speed = 0;
  19. speed = 500;
  20.  
  21.  
  22. var flag = true;
  23. var url = window.location.href;
  24. var sub3 = url.substring(url.length-3);
  25. let targetNode = document.querySelector('#quesAnswerArea');
  26.  
  27. function callback(mutationList, observer) {
  28. mutationList.forEach((mutation) => {
  29. switch (mutation.type) {
  30. case 'childList':
  31. mutation.addedNodes.forEach((node) => {
  32. if (node.className == 'qs_ques_rate_block') {
  33. document.getElementById('nextBtn').click();
  34. }
  35. })
  36. /* 从树上添加或移除一个或更多的子节点;参考mutation.addedNodes 和mutation.removeNodes */
  37. break;
  38. case 'attributes':
  39. /* mutation.target 中某个节点的一个属性值被更改;该属性名称在mutation.attributeName中,该属性之前的值为 mutation.oldValue */
  40. break;
  41. }
  42. });
  43. }
  44.  
  45. let observerOptions = {
  46. childList: true, // 观察目标子节点的变化,添加或删除
  47. attributes: true, // 观察属性变动
  48. subtree: true //默认是false设置为true后可观察后代节点
  49. }
  50.  
  51. let observer = new MutationObserver(callback);
  52.  
  53. observer.observe(targetNode, observerOptions);
  54.  
  55. function addbutton() {
  56. //1创建一个按钮节点
  57. var oButNode = document.createElement("mydiv");
  58. oButNode.innerHTML =
  59. '<div class="mydiv" style=" width: 400px; position: fixed; top: 8px; left: 8px; z-index: 99999; background-color: #eee; overflow-x: auto;">' +
  60. '<table border="1">' +
  61. '<tr>' +
  62. '<td>请输入要刷的题目数量</td>' +
  63. '<td><input id="donum" type="text"></input></td>' +
  64. '</tr>' +
  65. '<tr>' +
  66. '<td>停止按钮</td>' +
  67. '<td><input type="button" id="stop" value="stop" style="background-color:orange;"></input></td>' +
  68. '</tr>' +
  69. '<tr>' +
  70. '<td>开始按钮</td>' +
  71. '<td><input type="button" id="star" value="star" style="background-color:orange;"></input></td>' +
  72. '</tr>' +
  73. '</table>'
  74. '</div>'
  75. //获取div节点
  76. var oDivNode = document.getElementById("wrap");
  77. //将按钮添加进节点
  78. oDivNode.appendChild(oButNode);
  79. }
  80. addbutton();
  81.  
  82.  
  83. function over() {
  84.  
  85. var total = 0;
  86. total = Number(document.getElementById('doneQues').innerText);
  87. total = total-initalnum;
  88. console.log(total);
  89. console.log(initalnum);
  90. console.log(num);
  91. if (total > num) {
  92. clearInterval(dein);
  93. }
  94. }
  95.  
  96. document.getElementById("stop").addEventListener("click", function() {
  97. clearInterval(dein);
  98. });
  99.  
  100. document.getElementById("star").addEventListener("click",
  101. function() {
  102.  
  103. if (sub3 == "250" || sub3 == "258" || sub3 == "253" || sub3 == "257" || sub3 == "256" || sub3 == "197" || sub3 == "260") {
  104. let words = ['doucument', 'element', 'shabi', 'haha', 'memory', 'application', 'security', 'performance', 'security', 'console', 'new', 'desprate', 'select', 'errors', 'verbosse', 'preserve', 'log', 'group', 'similar', 'messages', 'eager', 'evaluation', 'log', 'preserve']
  105. temjishu = 0;
  106. initalnum = Number(document.getElementById('doneQues').innerText);
  107. num = Number(document.getElementById('donum').value);
  108. dein = setInterval(function() {
  109. temjishu++;
  110. document.getElementsByTagName('input')[0].value = words[(Math.ceil(Math.random() * 100)) % 23];
  111. document.getElementById('checkBtn').click();
  112. if (temjishu % 100 == 0) {
  113. over();
  114. }
  115.  
  116. }, speed);
  117. } else if (sub3 == "196" || sub3 == "180" || sub3 == "255") {
  118. temjishu = 0;
  119. initalnum = Number(document.getElementById('doneQues').innerText);
  120. num = Number(document.getElementById('donum').value);
  121. dein = setInterval(function() {
  122. temjishu++;
  123. document.getElementsByTagName('input')[(Math.ceil(Math.random() * 10)) % 3].click();
  124. document.getElementById('checkBtn').click();
  125. if (temjishu % 100 == 0) {
  126. over();
  127. }
  128. }, speed)
  129. } else if (url.search("ctb")) {
  130. var i = 0;
  131. var j = 0;
  132. var pan = "1";
  133. dein = setInterval(function() {
  134. i++;
  135. document.getElementById('removeFromWrongBtn').click();
  136. if (i == 40) {
  137. if (document.querySelector('.qs_ques_qid').innerText == pan) {
  138. setTimeout(function() {
  139. document.getElementById('nextBtn').click();
  140. }, 140);
  141. j++;
  142. if (j > 3)(clearInterval(dein));
  143. } else {
  144. j = 0;
  145. }
  146. i = 0;
  147. pan = document.querySelector('.qs_ques_qid').innerText;
  148.  
  149. var str = document.getElementById('currentPage').innerText;
  150. var ind = str.indexOf('/');
  151. if (str.substring(0, ind) == str.substring(ind + 1)) {
  152. flag = false;
  153. }
  154.  
  155. }
  156. }, 150);
  157. }
  158. }
  159. );
  160. })()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址