美文网首页
扇贝自动检查打卡

扇贝自动检查打卡

作者: 扶搏森 | 来源:发表于2019-03-26 16:34 被阅读0次

    由于本人一时兴起,在扇贝创建了一个共同学习英语的前端小组,随着人数的增多,为了更好管理,添加自动打卡检测。

    const puppeteer = require('puppeteer')
    
    const account = `609457773@qq.com`;
    const password = `****`;
    
    const sleep = time => new Promise(resolve => {
      setTimeout(resolve, time)
    })
    
    async function loginShanbei(loginUrl, teamUrl) {
    
      // 返回解析为Promise的浏览器
      const browser = await puppeteer.launch({
        args: ['--no-sandbox'],
        dumpio: false
      })
    
      // 返回新的页面对象
      const page = await browser.newPage()
    
      // 页面对象访问对应的url地址
      await page.goto(loginUrl, {
          waitUntil: 'networkidle2'
      })
    
      // 等待3000ms,等待浏览器的加载
      await sleep(1000)
    
      await page.type('#input-account', account);
      await page.type('#input-password', password);
    
      await page.click('#button-login');
      await page.waitForNavigation({
        waitUntil: 'load'
      });//等待页面加载出来,等同于window.onload
      await page.screenshot({path: 'example.png'});
    
      // 跳到小组页面
      await page.goto(teamUrl, {
          waitUntil: 'networkidle2'
      })
      // 可以在page.evaluate的回调函数中访问浏览器对象,可以进行DOM操作
      let lis = await page.evaluate(async () => {
        const table = document.getElementById('members')
        let members = table.getElementsByClassName('member')
        let li = []
        for (let i = 0; i < members.length; i++) {
          const member = members[i]
          const rate = member.getElementsByClassName('rate')[0]
          const rateSpan = rate.getElementsByTagName('span')[0]
          if (rateSpan.innerHTML && parseInt(rateSpan.innerHTML) < 95) {
            $(member).find('.checkbox').click()
            li.push(i)
          }
        }
        return li
      })
      await page.screenshot({path: 'example2.png', fullPage: true});
      // 如果有满足条件的就踢人
      if (lis.length > 0) {
        await page.click('#dismiss_container .btn');
        // 等待1000ms,等待浏览器的加载
        await sleep(1000)
        await page.click('.confirm');
      }
      // 关闭无头浏览器
      await browser.close()
      return Promise.resolve()
    }
    
    loginShanbei('https://web.shanbay.com/web/account/login', 'https://www.shanbay.com/team/manage/#p1')
    

    没有复杂逻辑,主要是用组长的账号登陆,之后跳转到小组管理页面,计算打卡低于95的同学,剔除小组。

    pupeteer截图

    相关文章

      网友评论

          本文标题:扇贝自动检查打卡

          本文链接:https://www.haomeiwen.com/subject/dfhnvqtx.html