selenium을 활용한 주간업무보고 자동화
우리 회사에서는 주간업무보고를 구글독스와 위키페이지에 두번 작성한다.
이는 똑같은 내용을 두번 적는 것은 참 귀찮은 작업이다.
그래서 selenium을 활용해서 구글독스에 작성한 주간업무보고를 txt로 내려받아 위키페이지에 자동으로 작성하는 프로그램을 만들게 되었다.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
def wirteFunc(target, StrNum, gubun, weekStrNum):
if gubun == "예외":
where = driver.find_element_by_css_selector(
f'#tinymce > table > tbody > tr:nth-child(8) > td:nth-child({weekStrNum}) > ol > li:nth-child({StrNum})')
else:
where = driver.find_element_by_css_selector(
f'#tinymce > table > tbody > tr:nth-child(8) > td:nth-child({weekStrNum}) > ol > li:nth-child({StrNum}) > p')
where.click()
for i, row in enumerate(target):
temp = row.split('\n')[0]
if not gubun == '':
if temp[:2] in 모듈종류:
where.send_keys(Keys.RETURN)
if i == 0:
where.send_keys(Keys.TAB)
where.send_keys('[' + Keys.TAB + temp[:2] + '[]')
where.send_keys(Keys.ARROW_LEFT)
where.send_keys(Keys.BACKSPACE)
where.send_keys(Keys.ARROW_RIGHT)
where.send_keys(temp[3:])
else:
where.send_keys(Keys.RETURN)
if i == 0:
where.send_keys(Keys.TAB)
where.send_keys(temp)
# tinymce > table > tbody > tr:nth-child(8) > td:nth-child(3) > ol > li:nth-child(1) > ol > li
for i, row in enumerate(target):
if len(target) - 1 == i:
row = row.replace('\n\n', '')
temp = row.split('\n')
where = driver.find_element_by_css_selector(
f'#tinymce > table > tbody > tr:nth-child(8) > td:nth-child({weekStrNum}) > ol > li:nth-child({StrNum}) > ol > li:nth-child({str(i + 1)})')
where.click()
where.send_keys(Keys.RETURN)
where.send_keys(Keys.TAB)
for q, text in enumerate(temp[1:]):
if ')' not in text:
if q != 0:
where.send_keys(Keys.RETURN)
where.send_keys(text)
# path = input('변환할 주간업무보고 파일 경로를 입력하세요(.txt) : ')
# name = input('이름을 입력하세요 : ')
# url = input('작성할 위키페이지 url 주소를 입력하세요 : ')
options = Options()
options.add_argument('--kiosk')
모듈종류 = ['개인', '법인', '회계', '급여']
f = open(r'/Users/tyflow/Downloads/주간업무보고_서비스개발1센터_개발2Unit_개발1Cell_2021.txt')
# f = open(path)
text = f.read()
tempList = text.split(f'유정수\n1. SmartAX 개발 및 유지보수')
# tempList = text.split(f'{name}\n1. SmartAX 개발 및 유지보수')
section = tempList[1].split('(')
이번주_유지보수 = section[2].split('[')[2:] if '없습니다' not in section[2] else []
이번주_신규메뉴 = section[3].split('[')[1:] if '없습니다' not in section[3] else []
이번주_기타업무 = section[4].split(')')[2:] if '없습니다' not in section[4] else []
이번주_속도개선 = section[5].split('[')[1:] if '없습니다' not in section[5] else []
이번주_이슈사항 = section[6].split('[')[1:] if '없습니다' not in section[6] else []
section_next = tempList[1].split('1. SmartAX 개발 및 유지')[1].split('(')
다음주_유지보수 = section_next[1].split('[')[2:] if '없습니다' not in section_next[1] else []
다음주_신규메뉴 = section_next[2].split('[')[1:] if '없습니다' not in section_next[2] else []
다음주_기타업무 = section_next[3].split(')')[2:] if '없습니다' not in section_next[3] else []
다음주_속도개선 = section_next[4].split('[')[1:] if '없습니다' not in section_next[4] else []
다음주_이슈사항 = section_next[5].split('[')[1:] if '없습니다' not in section_next[5] else []
driver = webdriver.Chrome('/Users/tyflow/Downloads/chromedriver', chrome_options=options)
url = 'http://wiki.duzon.com:8080/pages/editpage.action?pageId=101561528'
driver.get(url)
rogIn = driver.find_element_by_xpath('//*[@id="os_username"]')
rogIn.send_keys('jshi25')
rogIn = driver.find_element_by_xpath('//*[@id="os_password"]')
rogIn.send_keys('jshi25')
rogIn.send_keys(Keys.RETURN)
driver.switch_to.frame("wysiwygTextarea_ifr")
now = '2'
wirteFunc(이번주_유지보수, '1', '모듈', now)
wirteFunc(이번주_신규메뉴, '2', '모듈', now)
wirteFunc(이번주_기타업무, '3', '', now)
wirteFunc(이번주_속도개선, '4', '예외', now)
wirteFunc(이번주_이슈사항, '5', '예외', now)
next = '3'
wirteFunc(다음주_유지보수, '1', '예외', next)
wirteFunc(다음주_신규메뉴, '2', '예외', next)
wirteFunc(다음주_기타업무, '3', '예외', next)
wirteFunc(다음주_속도개선, '4', '예외', next)
wirteFunc(다음주_이슈사항, '5', '예외', next)
Author And Source
이 문제에 관하여(selenium을 활용한 주간업무보고 자동화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jshi25/selenium을-활용한-주간업무보고-자동화저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)