教师通常会使用Excel处理成绩,然后再录入到其他系统中。
利用puppeteer自动登录教务系统,录入成绩。
第一步骤:先实现自动登录
const fs = require('fs');
const puppeteer = require('puppeteer');
(async () => {
// 载入配置文件并使用JSON.parse()解析
var config = JSON.parse(fs.readFileSync('./config.json').toString());
console.log("(1) Config Loaded...");
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('http://192.168.1.1/web/web/web/index.asp');
// 输入用户和密码,点击登录
await page.type("#main3Col1 > div.main3Col1Box > div > table > tbody > tr:nth-child(1) > td:nth-child(2) > input.INPUTBOX",config.username);
await page.type("#main3Col1 > div.main3Col1Box > div > table > tbody > tr:nth-child(2) > td:nth-child(2) > input",config.password);
await page.click('#main3Col1 > div.main3Col1Box > div > table > tbody > tr:nth-child(4) > td:nth-child(2) > input[type="submit"]:nth-child(1)');
console.log("(2) Login Secuessed...");
// 跳转到成绩管理页面
await page.goto('http://192.168.1.1/jiaoshi/cj/jshi/zhuang.asp',{referer: 'http://192.168.1.1/jiaoshi/bangong/main/index1.asp'});
await browser.close();
})();
说明:
- 选择器可以利用Chrome的调试工具
- 原有网页跳转时,需要检查请求的Referer值,所有需要在goto时带上{referer:}选项。
- page.type(selecter,text) 可以实现录入文字
- page.click() 可以实现点击登录按钮
- page.goto() 实现页面的跳转
- 每次执行页面操作时,都添加await关键字,实现异步的操作。例如页面跳转过去后,但页面内容可能需要花一些时间才能显示出来。