기타 - 업무일지 자동화

아침7시개발·2022년 5월 25일
0

기타

목록 보기
1/1
post-thumbnail

파이썬으로 업무일지 자동화 해보자.

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를 읽어서 업무일지를 등록한다.

profile
쉬엄쉬엄하는 개발자

0개의 댓글