파이썬 코드
import email
import selenium
import time
import smtplib
import random
import sys
from email.mime.text import MIMEText
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from loguru import logger
logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}")
accounts = [
{
"id" : "ID",
"pwd" : "PWD",
"email" : "E-mail"
},
{
"id" : "ID",
"pwd" : "PWD",
"email" : "E-mail"
},
{
"id" : "ID",
"pwd" : "PWD",
"email" : "E-mail"
},
{
"id" : "ID",
"pwd" : "PWD",
"email" : "E-mail"
},
{
"id" : "ID",
"pwd" : "PWD",
"email" : "E-mail"
},
{
"id" : "ID",
"pwd" : "PWD",
"email" : "E-mail"
}
]
accounts_random=random.sample(accounts,len(accounts))
MAIL_TYPE_WORK = 1
MAIL_TYPE_HOME = 2
MAIL_TYPE_WORK_ERROR = 3
MAIL_TYPE_HOME_ERROR = 4
def send_mail(mail_type, to):
subject = '출근' if mail_type == MAIL_TYPE_WORK else '퇴근'
content = '정상 출근입니다. 확인 부탁드립니다.' if mail_type == MAIL_TYPE_WORK else '정상 퇴근입니다. 확인 부탁드립니다.'
smtp = smtplib.SMTP('smtp.gmail.com', 587)
smtp.starttls()
smtp.login('발신 메일', '발신 메일 패스워드')
msg = MIMEText(content)
msg['Subject'] = subject
msg['To'] = to
smtp.sendmail('발신 메일', to , msg.as_string())
smtp.quit()
def send_mail_Error(mail_type, to):
subject = '출근_에러' if mail_type == MAIL_TYPE_WORK_ERROR else '퇴근_에러'
content = '에러가 발생 하였습니다. 직접 확인 부탁드립니다.' if mail_type == MAIL_TYPE_WORK_ERROR else '에러가 발생 하였습니다. 직접 확인 부탁드립니다.'
smtp = smtplib.SMTP('smtp.gmail.com', 587)
smtp.starttls()
smtp.login('발신 메일', '발신 메일 패스워드')
msg = MIMEText(content)
msg['Subject'] = subject
msg['To'] = to
smtp.sendmail('발신 메일', to , msg.as_string())
smtp.quit()
def go_homepage():
driver.get("http://gw.yottatech.co.kr/")
driver.implicitly_wait(10)
driver.maximize_window()
def login(id, pwd):
driver.implicitly_wait(10)
time.sleep(0.5)
driver.find_element_by_xpath('//*[@id="emp_no"]').send_keys(id)
driver.find_element_by_xpath('//*[@id="passwd"]').send_keys(pwd)
driver.find_element_by_xpath('//*[@id="login"]/fieldset/div[1]/ul[3]/li[1]/a').click()
def logout():
driver.implicitly_wait(30)
driver.switch_to.frame('headerframe')
driver.find_element_by_xpath('//*[@id="frm"]/div[2]/ul[2]/li[2]/a/img').click()
driver.switch_to.default_content()
def popup():
go_homepage()
for account in accounts_random:
try :
login(account["id"], account["pwd"])
driver.implicitly_wait(10)
driver.switch_to.frame('popupframe')
time.sleep(1)
driver.find_element_by_xpath('//*[@id="popup_area"]/div[3]/p/label').click()
driver.implicitly_wait(10)
driver.switch_to.default_content()
logout()
except Exception as error:
print("에러발생", error)
logger.error(error)
driver.switch_to.default_content()
driver.implicitly_wait(10)
logout()
def go_work():
go_homepage()
for account in accounts_random:
try :
login(account["id"], account["pwd"])
time.sleep(random.randint(15,30))
driver.switch_to.frame('bodyframe')
time.sleep(1)
driver.find_element_by_xpath('//*[@id="frm"]/div/div[1]/div[1]/div[2]/div/div[2]/div[1]/ul/li[1]/a').click()
time.sleep(2)
driver.switch_to.alert.accept()
driver.implicitly_wait(10)
driver.switch_to.default_content()
logout()
send_mail(MAIL_TYPE_WORK, account["email"])
except Exception as error:
print("에러발생", error)
logger.error(error)
driver.switch_to.default_content()
logout()
send_mail_Error(MAIL_TYPE_WORK_ERROR, account["email"])
def go_home() :
go_homepage()
for account in accounts_random:
try :
login(account["id"], account["pwd"])
time.sleep(random.randint(15,30))
driver.switch_to.frame('bodyframe')
time.sleep(1)
driver.find_element_by_xpath('//*[@id="frm"]/div/div[1]/div[1]/div[2]/div/div[2]/div[1]/ul/li[2]/a').click()
time.sleep(2)
driver.switch_to.alert.accept()
driver.implicitly_wait(10)
driver.switch_to.default_content()
logout()
send_mail(MAIL_TYPE_HOME, account["email"])
except Exception as error:
print("에러발생", error)
logger.error(error)
driver.switch_to.default_content()
logout()
send_mail_Error(MAIL_TYPE_HOME_ERROR, account["email"])
if __name__ == '__main__':
driver = webdriver.Chrome('C:/XXX/XXXX/XXXXX/XXXXXX/chromedriver')
work_type=sys.argv[1]
if work_type == 'work':
go_work()
elif work_type == 'popup':
popup()
else :
go_home()
driver.quit()