버거킹 설문조사 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에서 실행할 수 있는 파일을 추가하였습니다.
해당 파일로 실행시 코드 실행 없이 바로 설문조사 자동화를 사용할 수 있습니다.
'자동화 > Selenium' 카테고리의 다른 글
Selenium Python 웹 자동화시 사용하는 스크롤 동작 유형 4가지 (0) | 2023.02.07 |
---|---|
주요 서점 주간 베스트 20위까지 데이터 엑셀에 자동화로 저장하기 (0) | 2023.01.29 |
파파이스 설문조사 Selenium으로 자동화하기 (0) | 2023.01.09 |
아파트 경매 목록 자동화로 추출하여 엑셀에 저장하기 (0) | 2023.01.06 |
설날 연휴 KTX 좌석 남아있는거 자동화로 확인하기 (0) | 2022.12.26 |