파이썬으로 업무일지 자동화 해보자.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os.path
import time
import schedule
from datetime import datetime
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
def job():
checkFile = "./TextFile.txt"
date_to_compare = datetime.fromtimestamp(os.path.getmtime(checkFile))
today = datetime.now()
date_diff = today - date_to_compare
if date_diff.days > 0:
return
# 내용 세팅
file = open(checkFile, "r", encoding='UTF8') # 미리 입력해둔 텍스트파일에서 내용 읽기
line = file.readlines() # 내용 한번에 읽기
print(line) # 내용 확인 위해 한번 print
file.close() # 파일 닫기
# 아이디 비밀번호 세팅
f = open('login.txt', 'r') # 로그인 정보 읽기
lines = f.readlines() # 내용 한번에 읽기
id = lines[0].replace('\n', '') # 아이디
pwd = lines[1].replace('\n', '') # 비밀번호
print("id=" + id)
print("pwd=" + pwd)
f.close()
# 12월 3일(금) 업무일지 세팅
# 요일 세팅
curr_date = datetime.today().weekday() # 요일 0:월 ~ 6:일
if curr_date > 4:
return
string_date = '월' # 기본값 월
if curr_date == 0:
string_date = '월'
elif curr_date == 1:
string_date = '화'
elif curr_date == 2:
string_date = '수'
elif curr_date == 3:
string_date = '목'
elif curr_date == 4:
string_date = '금'
month = datetime.today().month # 월
day = datetime.today().day # 일
inputText = str(month) + '월' + ' ' + str(day) + \
'일(' + string_date + ') 업무일지' # 업무일지 제목
driver = webdriver.Chrome(ChromeDriverManager().install()) # 크롬 드라이버
url = [url 주소]
driver.get(url) # url 주소로 이동
html_id = driver.find_element(
By.XPATH, "/html/body/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[1]/table/tbody/tr[1]/td[2]/input") # 아이디
print(html_id)
html_pwd = driver.find_element(
By.XPATH, "/html/body/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[1]/table/tbody/tr[2]/td[2]/input") # 비밀번호
html_id.send_keys(id) # 아이디 입력
html_pwd.send_keys(pwd) # 비밀번호 입력
elem = driver.find_element(By.NAME, "id") # 아이디 창
elem.send_keys(Keys.RETURN) # 엔터 입력
time.sleep(3) # 3초 슬립
url = [로그인 후 이동할 주소] # 업무일지 입력창 주소
driver.get(url) # url 주소로 이동
time.sleep(3) # 3초 슬립
driver.find_element(By.NAME, "subject").send_keys(
inputText) # 제목에 업무일지 제목 입력
driver.switch_to.frame(
driver.find_element(By.XPATH, """//iframe[@title="리치 텍스트 편집기, contents"]""")) # html 안에 iframe 으로 이동
iframes = driver.find_element(
By.XPATH, "html/body/p") # iframe 안에서 입력창 쪽으로 이동
iframes.send_keys(line) # 입력창에 텍스트파일 내용 입력
driver.switch_to.default_content() # 원래 frame으로 돌아옵니다.
time.sleep(3) # 3초 슬립
driver.find_element(
By.XPATH, """//input[@type="image"][@src="../images/common/btn_regit.gif"]""").click() # 등록하기 버튼 클릭
driver.quit()
schedule.every().day.at("17:30").do(job)
while True:
schedule.run_pending()
time.sleep(1)
pyinstaller가 없다면 먼저 설치하자.
cmd에서 pyinstaller -F -noconsole -nowindowed test.pyw 입력한다.
test.exe를 시작프로그램으로 등록하자.
매일 5시 30분에 textfile.txt를 그날 수정했다면 login.txt에서 로그인 정보를 읽고 textfile.txt를 읽어서 업무일지를 등록한다.
끝