본문 바로가기

자동화/Selenium

KFC 설문조사 실행파일로 자동화하여 스마트 코드 확인하기

728x90

KFC 설문조사도 자동화로 잘 사용하고 있었는데 코드 pycharm에서 실행하는 방식보다 실행파일이 더 효율적이기 때문에 실행파일로 자동화 할 수 있게 추가 구현하였습니다.

 

설문조사 코드는 기존에 작성하였던 코드를 활용한 후 실행파일 GUI 부분만 추가 작성하였습니다.

 

https://autoshovel.tistory.com/13

 

KFC 설문조사 Selenium으로 자동화하기

버거킹 설문조사 외 KFC에서도 영수증을 보면 설문조사 후 무료 세트 업그레이드가 있습니다. 지난번 버거킹 설문조사 자동화에 이어 KFC도 동일하게 자동화하여 편리하게 사용할 수 있게 코드로

autoshovel.tistory.com

 

 

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도 편리하게 설문조사하여 무료 제공 또는 사이즈업 혜택을 꼭 얻으시길 바랍니다.

 

KFC.zip
14.73MB

 

번호 입력 후 실행시 스마트 코드를 얻을 수 있습니다.

 

 

 

728x90