Completion over Perfection

파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-2탄 - 개발 구현) 본문

파이썬 (Python)

파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-2탄 - 개발 구현)

난차차 2020. 7. 2. 22:45
반응형

파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-2탄 - 개발 구현하기)

지난 포스트 2-1탄에 이어서 작성합니다. 

(2-1탄 보러 가기)

 

2-1탄에서는 실제 로또 구매 사이트인 동행복권 온라인 페이지를 띄우고,

팝업창 뜨는걸 닫고 로그인을 진행하기 직전까지 진행해보았습니다.

 

로그인을 하면 팝업창이 또 뜨기 때문에

로그인 코드 밑에다가 동일한 코드로 복붙하셔서 닫아주시면 됩니다.

 

사실 팝업은 안닫아도 되긴 하지만..

전 거슬려서 닫는거고, 다른 자동화를 진행할 때도 도움이 될만한 내용이라 넣은 거니

팝업창 닫기 싫으시면 안닫으셔도 돼요!

 

아 참!

그리고 팝업창이 2개가 고정으로 뜨는게 아니라

지난주에는 들어가봤더니 또 3개가 뜨더라구요.

그래서 일부 코드를 수정해서 n개가 떴을 때 n개 모두 닫는 걸로 코드를 수정했습니다.

 

팝업이 3개가 떠버렸다.. 점점 늘어날 수도..

 

수정된 코드는 아래와 같습니다. 

 

[기존에 사용했던 팝업창 2개 닫기 코드]

windows_list = driver.window_handles
# print(windows_list)

cnt = 1
    for i in range(2):
    driver.switch_to.window(windows_list[cnt])
    driver.close()
    cnt+=1

 

[수정된 n개 팝업창 모두 닫기 코드]

windows_list = driver.window_handles
# print(windows_list) #팝업까지 3개 잡힘
cnt = 1
    for i in range(len(windows_list)-1):
    driver.switch_to.window(windows_list[cnt])
    driver.close()
    cnt+=1

 

몇개가 뜰 지 모르기 때문에 일단 windows_list 안에 팝업 ID를 담고,

len(windows_list) 함수를 써서 몇개인지를 파악합니다.

 

메인창은 닫으면 안되기 때문에 for 문은 len(windows_list)에서 -1을 해주었습니다.

위와 같이 소스를 수정하면 팝업창이 몇개가 뜨던지 모두 닫히게 될겁니다.

실제로 돌려보고 정상적으로 팝업창 닫히는 것 확인했습니다.

 

그럼 이제 로그인을 해보자!

 

그럼 지난 포스트에서 로그인 버튼을 누르는 것까지 진행을 해보았습니다.

그럼 이제 실제로 아이디와 비번을 입력해서 로그인을 해보도록 하겠습니다.

 

로그인 버튼을 누른 이후의 코드는 아래와 같습니다. 

 

 

# 로그인 버튼 클릭

driver.find_element_by_xpath('/html/body/div[1]/header/div/div[2]/form/div/ul/li[1]/a').click()

 

 

# 버튼 클릭후 창이 뜰때까지 암묵적으로 5초간 기다려준다. 페이지 로딩보다 파이썬 실행이 빠르면 오류가 나기 때문..
driver.implicitly_wait(5)

 

# 아이디 입력칸을 클릭하고, 아이디 값을 입력칸에 넣어준다

driver.find_element_by_xpath('/html/body/div[3]/section/div/div[2]/div/form/div/div[1]/fieldset/div[1]/input[1]').send_keys('여기에 본인의 동행복권 아이디를 넣어준다')

 

로그인 입력창을 선택하고 아이디를 전송하자

 

# 비밀번호 입력칸을 클릭하고, 비밀번호 값을 입력칸에 넣어준다
driver.find_element_by_xpath('//*[@id="article"]/div[2]/div/form/div/div[1]/fieldset/div[1]/input[2]').send_keys('여기에 본인의 동행복권 비밀번호를 넣어준다')

 

비밀번호 입력칸을 선택하고 비밀번호를 전송하자

 

# 아이디와 비밀번호를 넣었으니, 로그인 버튼을 눌러주자

driver.find_element_by_xpath('//*[@id="article"]/div[2]/div/form/div/div[1]/fieldset/div[1]/a').click()

로그인 버튼을 눌러준다

 

여기까지 왔다면 정상적으로 접속이 되었을겁니다.

그럼 이제 다음화면에서 로또645버튼을 클릭하고 실제 로또를 구입하러 가보겠습니다.

 

로그인이 완료되면 아래와 같은 화면이 보이실건데요,

여기에서 복권구매를 클릭하고,

 

복권 구매 클릭시 나오는 메뉴에서 로또 6/45를 클릭해줘야 합니다.

 

그럼 우리는 버튼을 2개를 클릭해야겠네요.

 

코드는 다음과 같이 짰습니다.

 

 

# 복권구매 GNB 클릭
driver.find_element_by_xpath('//*[@id="gnb"]/ul/li[1]/a').click()

 

# GNB에서 로또 645 버튼 클릭

driver.find_element_by_xpath('//*[@id="gnb"]/ul/li[1]/div/ul/li[1]/a').click() 

 

이렇게 하면 실제 로또 구매를 위한 팝업창이 뜰겁니다.

 

여기에서 또 생각치 못한 난관을 만나게 되는데....후..

 

이런 창이 떠야 됩니다.

글이 길어져서 다음편에 또 쓰도록 하겠습니다!

 

반응형
Comments