728x90
KFC 설문조사도 자동화로 잘 사용하고 있었는데 코드 pycharm에서 실행하는 방식보다 실행파일이 더 효율적이기 때문에 실행파일로 자동화 할 수 있게 추가 구현하였습니다.
설문조사 코드는 기존에 작성하였던 코드를 활용한 후 실행파일 GUI 부분만 추가 작성하였습니다.
https://autoshovel.tistory.com/13
GUI 환경은 버거킹 때와 동일하게 tkinter 라이브러리를 사용하였으며, 실행파일로 만들기 위해 pyinstaller를 사용하였습니다.
(주요사항: 작은 윈도우 크기에 화면 사이즈 고정, 실행 버튼 클릭시 결과 출력까지 자동으로 실행)
pyinstaller 중 하나의 파일로 사용하기 위해 --onefile 옵션을 console 실행창을 띄우지 않기 위해 --noconsole 옵션을 사용하였습니다.
pyinstaller --onefile --noconsole 실행파일명
pycharm terminal을 이용하여 실행파일을 생성하였습니다.
전체 코드입니다. 버거킹때와 대부분 동일한 코드를 사용하였으며 코드를 수정하는데 어려운 점은 없었습니다.
실행시간도 10초 내외로 빠르게 스마트 코드를 획득할 수 있었습니다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from tkinter import *
def start():
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get('http://www.kfckoreasurvey.com')
codeNumber = txt.get()
# 설문조사 번호 입력 화면
driver.find_element(By.ID, 'InputCouponNum').send_keys(codeNumber)
driver.find_element(By.CLASS_NAME, 'toast-close-button').click()
driver.find_element(By.ID, 'NextButton').click()
# 1번째 체크 화면
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[1].click()
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[3].click()
driver.find_element(By.ID, 'NextButton').click()
# 2번째 체크 화면
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[0].click()
driver.find_element(By.ID, 'NextButton').click()
# 3번째 체크 화면
count = len(driver.find_elements(By.CLASS_NAME, 'radioSimpleInput'))
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[0].click()
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[5].click()
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[10].click()
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[15].click()
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[20].click()
if count == 30:
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[25].click()
driver.find_element(By.ID, 'NextButton').click()
# 4번째 체크 화면
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[1].click()
driver.find_element(By.ID, 'NextButton').click()
# 5번째 주관식 입력 화면
driver.find_element(By.ID, 'NextButton').click()
# 6번째 체크 화면
driver.find_elements(By.CLASS_NAME, 'radioSimpleInput')[1].click()
driver.find_element(By.ID, 'NextButton').click()
# 스마트 코드 실행파일에 노출
result = driver.find_element(By.CLASS_NAME, 'ValCode').text
result = result.lstrip('스마트 코드:')
label3.config(text=result)
driver.close()
tk = Tk()
# 타이틀 설정
tk.title('KFC 설문조사 자동화')
# 화면 크기 설정
tk.geometry("350x100")
# 사이즈 변경 불가
tk.resizable(width=False, height=False)
# 레이블 및 텍스트박스 생성
label1 = Label(tk, text='설문조사 번호 : ')
txt = Entry(tk, width=23)
# 레이블 및 텍스트박스 위치 설정
label1.place(x=3, y=10)
txt.place(x=100, y=10)
# 버튼 생성 및 위치 설정
btn1 = Button(tk, text='실행', width=10, command=start)
btn1.place(x=120, y=40)
# 결과값 레이블 생성 및 위치 설정
label2 = Label(tk, text='스마트 코드(5자) : ')
label2.place(x=55, y=70)
label3 = Label(tk, text='')
label3.place(x=170, y=70)
# 윈도우창 종료시까지 실행
tk.mainloop()
설문조사를 자동으로 할 수 있는 실행파일입니다.
해당 파일 실행하여 번호만 입력 후 (-제외) 실행 버튼 클릭시 스마트 코드를 얻을 수 있습니다.
KFC도 편리하게 설문조사하여 무료 제공 또는 사이즈업 혜택을 꼭 얻으시길 바랍니다.
728x90
'자동화 > Selenium' 카테고리의 다른 글
네이버 메모에 짧은 내용 자동화로 작성해서 올리기 (0) | 2023.03.09 |
---|---|
간단한 네이버 메일 자동화로 보내기 (With Selenium, Python) (0) | 2023.03.07 |
업비트 코인 시가총액 및 거래대금 목록 자동화로 엑셀에 저장하기 (0) | 2023.02.22 |
네이버 주택담보대출 금리 정보 목록 자동화로 한번에 확인하기 (0) | 2023.02.13 |
selenium element locator 실행 시간 비교해보기 (class_name vs xpath) (0) | 2023.02.11 |