Toggle navigation
Toggle navigation
This project
Loading...
Sign in
HyeonJun Jeon
/
Extended-Calendar
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
박시진
2022-06-06 23:02:49 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
ff5be47a8c461512dcebbaea540db84800baf288
ff5be47a
1 parent
79c75582
[Add]Attendace check module[failed]
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
123 additions
and
3 deletions
server/libs/E_Campus.js
server/libs/test.js
server/libs/E_Campus.js
View file @
ff5be47
...
...
@@ -152,6 +152,7 @@ async function getOne(page, index) {
async
function
close
()
{
browser
.
close
();
return
Info
;
}
...
...
server/libs/test.js
View file @
ff5be47
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
...
...
Please
register
or
login
to post a comment