【JS自用模板】自动点击选课的操作模板

以激动点击课程为案例复习一下基本前端,容易涉及的问题包括如何提取object类的数字,setTimeout为什么不起作用?
具体思路是,此处会立刻选中符合条件的页面元素打开,然后1小时后会刷新页面,相应地播放页面也会在1小时后关闭,然后检查是否大于要求的课时数,如果大于就选下一个合条件的课时。
关于技巧,因为此处的设置,所选课程后面的课程虽然也符合条件,起码在一小时后才会发生,此处通过增加了time6060*1000设置后面的课程都是发生在一个小时候后,所有不用担心会并发点击冲突,然后就是自循环地关闭检查关闭检查,当然这个播放页面要设置更加详细点,此处是配合自动答题插件使用的。


///-----------【选课页面】隔1小时点击一次页面--------------------------------------------------

function Run(ClassPara,time) {

   setTimeout(function(){
    //注,将需求函数SelectRan的参数time和下方的“time*1000”是同一个
    //以此方式绑在一起

      console.log( ClassPara[time].innerText )

// 第三步,设置点击的元素

     // ClassPara[time].childNodes[3].click()

// 第二步 ,设置每一个间隔点击的时间 1000为一秒

     console.log( "-----------------" )
      console.log( time )
     console.log( "-----------------" )

      console.log( document.getElementsByClassName("titleName_content")[time].innerText )

     //提取已学课时数字,要求所学课时数字对比,小于就点击
	
     if( document.getElementsByClassName("titleName")[time].childNodes[5].childNodes[1].innerText
           >=
            document.getElementsByClassName("titleName")[time].childNodes[5].childNodes[2].data.replace(/[^\d]/g, "") ){

              stopIndex = time;
              console.log("最后一项符合条件的数字是")
              console.log(stopIndex)
     }

     if( document.getElementsByClassName("titleName")[time].childNodes[5].childNodes[1].innerText
           <
            document.getElementsByClassName("titleName")[time].childNodes[5].childNodes[2].data.replace(/[^\d]/g, "") ){

              console.log( document.getElementsByClassName("titleName")[time].childNodes[5].childNodes[0].data )
              console.log( document.getElementsByClassName("titleName")[time].childNodes[5].childNodes[1].innerText )

              console.log( document.getElementsByClassName("titleName")[time].childNodes[5].childNodes[2].data )
              console.log( document.getElementsByClassName("titleName")[time].childNodes[5].childNodes[2].data.replace(/[^\d]/g, "") )


      // 设置点击的元素
       setTimeout(function(){
            console.log("点击一次")
            console.log(time)
            console.log("个")
            
             ClassPara[time].childNodes[3].click()
        },5000+(time-stopIndex-1)*5000)
		
		//time是符号条件的所在向,所以减去不符合条件所在向的数量即可,这个数量的获取全局变量捕捉每一次循环,并记录即可

		// 思路是,此处会立刻选中符合条件的页面元素打开,然后1小时后会刷新页面,相应地播放页面也会关闭,然后检查是否大于要求的课时数,如果大于就选下一个合条件的课时,因为此处的设置,所选课程后面的课程起码在一小时才会发生,但增加了time*60*60*1000设置后面的课程都是发生在一个小时候后,所有不用担心会并发点击。


     }
    }, 1000+time*1000)

}


let stopIndex = 0;


// 第一步 :i是从第几个开始 设置一下即可



for (var i=0;i< document.getElementsByClassName("titleName_content").length ;i++){


  if( document.getElementsByClassName("titleName_content") ){

          Run(document.getElementsByClassName("titleName_content"), i)

    }

}




///-----------【进入课程页面】点击一次页面--------------------------------------------------

function Run2(ClassPara,time) {
   setTimeout(function(){
    //注,将需求函数SelectRan的参数time和下方的“time*1000”是同一个
    //以此方式绑在一起
      console.log( ClassPara[time].innerText )

// 第三步,设置点击的元素
      ClassPara[time].click()

// 第二步 ,设置每一个间隔点击的时间 1000为一秒
      }, 1000+time*5000)
}



// 第一步 :i是从第几个开始 设置一下即可
  if(document.getElementsByClassName("lessonTitle") .length >0)  {
          Run2(document.getElementsByClassName("lessonTitle"), 0)
  }



///-----------【进入课程学习页面】进入页面自动播放--------------------------------------------------



    setTimeout(
      function(){
        if(document.getElementsByClassName("playerButton")[0]){
         document.getElementsByClassName("playerButton")[0].childNodes[0].click()
          console.log("点击确认框")
        }
      }
  ,2000)


    setTimeout(
      function(){

        if(document.getElementsByClassName("playerStartButton")[0]){
          document.getElementsByClassName("playerStartButton") [0].click()
          console.log("点击播放")
        }
      }
  ,5000)




///-----------看够一个小时就自己关闭

    setTimeout(
      function(){
        if(document.getElementById("video-Player") != null){


        window.open('','_self');window.close();

          console.log("关闭.....:")

        }
      }
  ,60*60*1000)



///-----------一个小时刷新一次 其他页面


    setTimeout(
      function(){
        if(document.getElementById("video-Player") == null){


        window.location.reload()

          console.log("刷新.....:")

        }
      }
  ,65*60*1000)

你可能感兴趣的:(javascript,开发语言,ecmascript)