박시진

[Add]Attendace check module[failed]

......@@ -152,6 +152,7 @@ async function getOne(page, index) {
async function close() {
browser.close();
return Info;
}
......
const express = require("express");
const router = express.Router();
const puppeteer = require("puppeteer")
const { getPeed, getSubjects, login, close } = require("./E_Campus.js");
async function runrun() {
page = await login("lorem", "lorem");
await getPeed(page);
await getSubjects(page);
await close();
Info = await close();
console.log(Info);
console.log(Info.subjects)
}
runrun();
async function attendanceCheck(subject, code) {
try {
//for visibility, headless: false
browser = await puppeteer.launch({
headless: false,
args: [
"--window-size=1920x1080",
"--start-maximized",
"--no-sandbox",
"--disable-dev-shm-usage",
"--lang=ko",
],
});
const page = await browser.newPage();
await page.setViewport({
width: 1920,
height: 1080,
});
await page.goto(
"https://info21.khu.ac.kr/com/LoginCtr/login.do?returnurl=https://portal.khu.ac.kr/ksign/index.jsp?ssoGb=ptfol&sso=ok"
);
await page.type("#userId", Info.id);
await page.type("#userPw", Info.pw);
//press the login button on E_Campus homepage
await Promise.all([
page.click("#loginFrm > div > div.wrap > div.login_box > div.m_box.idx02.fr > button.btn.loginbtn1"),
page.waitForNavigation(),
]);
await page.goto(
"https://portal.khu.ac.kr/haksa/clss/clss/elctCrtf/index.do"
);
multipleClick(page);
// await page.type("Selector 입력", code);
// await page.click("확인버튼 selector");
result = await checkStatus(page);
console.log(result);
} catch (err) {
console.log(err);
}
}
async function multipleClick(page) {
let data = [];
let selector = "#baseForm > div:nth-child(3) > div.table_wrap.pc_view > table > tbody";
const number = await page.$$eval(selector, (data) => data.length);
page.click("#baseForm > div:nth-child(3) > div.table_wrap.pc_view > table > tbody > tr.first");
page.click("#baseForm > div:nth-child(3) > div.table_wrap.pc_view > table > tbody > tr.last");
for (let index = 2; index < number; index++) {
page.click(`#baseForm > div:nth-child(3) > div.table_wrap.pc_view > table > tbody > tr:nth-child("+ ${index} +")`)
}
}
async function checkStatus(page) {
let data = [];
let selector = "#baseForm > div:nth-child(3) > div.table_wrap.pc_view > table > tbody";
const number = await page.$$eval(selector, (data) => data.length);
data.push(await except(page));
for (let index = 2; index < number; index++) {
data.push(await getOne(page, index));
}
// const promise3 = Promise.resolve(data);
// promise3.then(value => {
// for (let index = 0; index < value.length; index++) {
// if (value[index]=="출석완료") {
// return "success";
// }
// else{
// return "fail";
// }
// }
// })
return data;
}
async function except(page) {
let data = {};
let temp = await page.$(
"#baseForm > div:nth-child(3) > div.table_wrap.pc_view > table > tbody > tr.first > td.td_btn"
);
data.name = await page.evaluate((data) => {
data.push(data.textContent);
}, temp);
let templast = await page.$(
"#baseForm > div:nth-child(3) > div.table_wrap.pc_view > table > tbody > tr.last > td.td_btn"
);
data.name = await page.evaluate((data) => {
data.push(data.textContent);
}, templast);
return Promise.resolve(data);
}
async function getOne(page, index) {
let data = {};
let temp = await page.$(
"#baseForm > div:nth-child(3) > div.table_wrap.pc_view > table > tbody > tr:nth-child("+index+ ") > td.td_btn"
);
data.name = await page.evaluate((data) => {
return data.textContent;
}, temp);
return Promise.resolve(data);
}
async function test() {
await runrun();
await attendanceCheck("오픈소스SW개발 00분반", 1234);
}
test();
\ No newline at end of file
......