본문 바로가기

자동화/Selenium

버거킹 설문조사 exe 실행파일로 자동화 사용하기

728x90

버거킹 설문조사 Selenium을 사용하여 자동화해서 편리하게 사용하고 있었는데요.
https://autoshovel.tistory.com/6

 

버거킹 설문조사 Selenium으로 자동화하기

버거킹 설문조사를 하면 무료 세트 업그레이드를 할 수 있는데 설문조사 항목도 많고 귀찮을 때가 많습니다. 이걸 자동화하면 편리하게 사용할 수 있을거 같아서 코드로 작성하였습니다. 버거

autoshovel.tistory.com


코드를 실행하기 위해 Python + Selenium 환경을 세팅해야 하는 단점이 있어서 많은 사람이 이용을 하지 못하는 부분이 있었습니다.
이 부분을 해결하기 위해 GUI를 통해 파일로 실행하도록 개선을 시도하였습니다.

GUI 환경은 python 내 내장되어 있는 tkinter 라이브러리를 사용하였으며, 실행파일로 만들기 위해 pyinstaller를 사용하였습니다.

tkinter 라이브러리를 사용하여 GUI 창에 대한 설정을 구현하였습니다.
화면 크기는 크지 않는 작은 화면으로 설정하였으며 화면 사이즈가 변경될 필요가 없다고 생각하여 변경하지 못하게 코드를 작성하였습니다.

 

# 윈도우창 생성
tk = Tk()

# 타이틀 설정
tk.title('버거킹 설문조사 자동화')

# 화면 크기 설정
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=120, y=8)

# 버튼 생성 및 위치 설정
btn1 = Button(tk, text="실행", width=10, command=start)
btn1.place(x=110, y=40)

# 결과값 레이블 생성 및 위치 설정
label2 = Label(tk, text='검증코드 : ')
label2.place(x=55, y=70)

label3 = Label(tk, text='')
label3.place(x=140, y=70)

# 윈도우창 종료시까지 실행
tk.mainloop()


기존에는 http://kor.tellburgerking.com URL을 사용했었는데
해당 URL로 접근시 iframe 때문인지 정상적으로 동작하지 않는 현상이 발견되어 iframe 내 URL로 변경하였습니다.

 

driver.get('https://rbixm.qualtrics.com/jfe/form/SV_0vUefdf7aXo9D2C?CountryCode=KOR&Q_Language=KO&PT=5')


전체 코드입니다. 해당 코드를 사용하여 GUI 환경으로 편리하게 설문조사를 수행할 수 있습니다.

 

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 *
import time

# 설문조사 시작 함수
def start():
    code_number = txt.get()
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

    driver.get('https://rbixm.qualtrics.com/jfe/form/SV_0vUefdf7aXo9D2C?CountryCode=KOR&Q_Language=KO&PT=5')
    driver.maximize_window()
    time.sleep(5)

    driver.find_element(By.ID, 'QR~QID65~6').send_keys(code_number)  # 설문조사 코드 입력 ('-' 제외하고 숫자만)
    driver.find_element(By.ID, 'NextButton').click()
    time.sleep(2)

    def menuclick(ID):  # 메뉴 버튼 클릭 함수
        driver.find_element(By.ID, ID).click()
        driver.find_element(By.ID, 'NextButton').click()
        time.sleep(2)

    def radioclick(num):  # 라디오 버튼 클릭 함수
        for i in range(1, num):
            driver.find_elements(By.CLASS_NAME, 'c4')[i].click()
        driver.find_element(By.ID, 'NextButton').click()
        time.sleep(2)

    # 각 항목 자동 클릭
    menuclick('QID5-3-label')
    menuclick('QID7-2-label')
    menuclick('QID10-1-label')
    radioclick(4)
    radioclick(3)
    menuclick('QID63-1-label')
    menuclick('QID30-2-label')
    menuclick('QID36-1-label')
    menuclick('QID38-136-label')
    menuclick('QID39-13-label')
    menuclick('QID40-14-label')
    radioclick(7)
    menuclick('QID43-3-label')

    driver.find_element(By.ID, 'NextButton').click()
    time.sleep(2)

    # 검증 코드 결과값 출력
    result = driver.find_element(By.XPATH, '//*[@id="EndOfSurvey"]/strong[1]').text
    result = result.lstrip('검증 코드:')
    label3.config(text=result)

    driver.close()


# 윈도우창 생성
tk = Tk()

# 타이틀 설정
tk.title('버거킹 설문조사 자동화')

# 화면 크기 설정
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=120, y=8)

# 버튼 생성 및 위치 설정
btn1 = Button(tk, text="실행", width=10, command=start)
btn1.place(x=110, y=40)

# 결과값 레이블 생성 및 위치 설정
label2 = Label(tk, text='검증코드 : ')
label2.place(x=55, y=70)

label3 = Label(tk, text='')
label3.place(x=140, y=70)

# 윈도우창 종료시까지 실행
tk.mainloop()

 

코드 입력 후 검증 코드 결과를 확인할 수 있습니다.


windows와 mac에서 실행할 수 있는 파일을 추가하였습니다.
해당 파일로 실행시 코드 실행 없이 바로 설문조사 자동화를 사용할 수 있습니다.

windows.zip
14.73MB
mac.zip
15.38MB

728x90