본문 바로가기

python/인터파크티켓

인터파크티켓 매크로 만들기 2

작년에 만든 매크로 프로그램이 인터파크 티켓 사이트 변경에 의해 돌아가지 않아 개선한 내용을 새로 작성합니다.

 

이번 글은 1편에서 수정이 필요한 부분만 다루도록 하겠습니다.

 

이전에 만들었던 방식은 상세 페이지 입장 후 예매하기버튼을 눌러서 팝업을 먼저 띄워서 날짜와 시간을 선택하는 방식이였습니다.

 

현재 인터파크 티켓에 접속해서 예매하기를 들어가보면, 아래 캡쳐화면 처럼 confirm창이 뜨고 있습니다.

 

확인을 누르면 바로 다음 단계로 가고 취소를 눌러야 날짜, 시간을 설정할 수 있는데 제어가 쉽지 않아 방식을 바꿨습니다.

 

 

 

상세페이지에 처음 접속해서 예매안내 팝업 제거하는 소스도 수정했습니다.

# 혹시 예매안내가 있는지 체크 후 있으면 닫기 버튼 클릭
close_check = self.check_exists_by_element(By.CLASS_NAME, "prdGuide")

if close_check:
	self.driver.find_element(By.CLASS_NAME, "is-bottomBtn").click()

 

날짜와 시간을 먼저 선택하고 예매하기 버튼클릭에 대한 수정 부분입니다.

 

1편의 소스에서 날짜 선택하는 부분만 위쪽으로 올리면 돌아가지 않을까 생각됩니다.

 

# 월 체크
calen = self.driver.find_elements(By.CSS_SELECTOR, ".datepicker-panel")
uls = calen[0].find_elements(By.TAG_NAME, "ul")
year_month = uls[0].find_elements(By.TAG_NAME, "li")[1].text.split('. ')
year = year_month[0]  # 년
month = year_month[1]  # 월

yearC = int(wantYear) - int(year)
monthC = int(wantMonth) - int(month)

prev = uls[0].find_elements(By.TAG_NAME, "li")[0]
next = uls[0].find_elements(By.TAG_NAME, "li")[2]

s = yearC * 12 + monthC
i = 0
if s > 0:
    while i < s:
        next.click()
        i = i + 1
elif s < 0:
    while i < s:
        prev.click()
        i = i - 1

# 선택 가능한 날짜 모두 가져오기
CellPlayDate = self.driver.find_elements(By.XPATH, "//ul[@data-view='days']/li[@class!='disabled']")
for cell in CellPlayDate:
    if cell.text == wantDate:
        cell.click()
        break

# 선택 가능한 시간 가져오기
time_li = self.driver.find_elements(By.XPATH, "//a[@class='timeTableLabel']/span")

hour_min = hour + ":" + min_

for li in time_li:
    if li.text == hour_min:
        li.click()
        break

 

그리고 예매하기 예매하기 버튼의 속성이 바꼈는지 잘 안먹는거 같아서 예매하기 버튼 누르는 소스도 수정해줬습니다.

a = self.driver.find_element(By.CLASS_NAME, "is-primary")
a.click()

 

아래는 매크로 실행 영상입니다.

중간중간 대기 시간을 걸어둬서 딜레이가 있습니다.

매크로실행 영상입니다.

 

 

'python > 인터파크티켓' 카테고리의 다른 글

인터파크티켓 매크로 만들기? 3  (81) 2022.01.11
인터파크티켓 매크로 만들기 1  (77) 2020.08.27