본문 바로가기

자동화/Selenium

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

728x90

버거킹 설문조사 외 KFC에서도 영수증을 보면 설문조사 후 무료 세트 업그레이드가 있습니다.

지난번 버거킹 설문조사 자동화에 이어 KFC도 동일하게 자동화하여 편리하게 사용할 수 있게 코드로 작성하였습니다.

 

버거킹 설문조사 자동화: https://autoshovel.tistory.com/6

 

설문조사 코드에 영수증에 적혀있는 설문조사 번호로 입력하여 코드를 작성합니다. (- 제외하고 숫자만 입력)

KFC 설문조사 페이지 진입하면 하단 안내 토스트가 노출되는데 이것 때문에 계속 버튼이 눌리지 않아서 토스틑 닫은 후 다음 페이지로 이동할 수 있게 구현하였습니다.

 

driver.find_element(By.ID, 'InputCouponNum').send_keys('설문조사 코드')
driver.find_element(By.CLASS_NAME, 'toast-close-button').click()
driver.find_element(By.ID, 'NextButton').click()

 

하단 토스트를 삭제해야 계속 버튼이 자동화로 클릭 가능

 

3번째 체크 화면에서는 유형에 따라 체크할 수 있는 항목이 5개이거나 6개인 경우가 있습니다.

둘 중 어느 화면이 나와도 에러 없이 넘어갈 수 있도록 element 개수를 얻은 후 if문을 사용해 6개인 경우에만 클릭할 수 있도록 구현하였습니다.

 

#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()

 

중간에 추가 설문조사를 하지 않아도 스마트 코드를 얻을 수 있기 때문에 추가 설문조사를 하지 않고 완료하여 얻은 스마트 코드를 콘솔창에서 확인할 수 있도록 구현하였습니다.

(실제로는 숫자 5자가 노출됩니다.)

 

 

전체 코드입니다. 설문조사 번호만 입력하면 20초 내외로 자동화한 코드로 인해 빠르게 스마트 코드를 얻을 수 있습니다.

KFC도 편리하게 얻은 스마트 코드로 징거버거 / 타워버거 무료 업그레이드 해먹어요!!

 

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

driver.get('http://www.kfckoreasurvey.com')

#설문조사 번호 입력 화면
driver.find_element(By.ID, 'InputCouponNum').send_keys('설문조사 코드')
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()

#스마트 코드 콘솔 결과로 노출
print(driver.find_element(By.CLASS_NAME, 'ValCode').text)

 

728x90