일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 테마주
- 주식 상한가
- 주식
- 손에 잡히는 경제 요약
- 급등주
- 급등 이유
- Python
- 이진우
- boj
- 급등주 분석
- 경제
- java
- 코딩테스트
- 손에 잡히는 경제
- 파이썬
- 이진우의 손에 잡히는 경제
- 손경제 요약
- Programmers
- 프로그래머스
- 경제뉴스 요약
- 상한가 분석
- 백준
- 손경제
- 경제뉴스
- 알고리즘
- 상한가
- 상한가 이유
- 자바
- 주식 분석
- 코테
- Today
- Total
Completion over Perfection
파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-2탄 - 개발 구현) 본문
파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-2탄 - 개발 구현하기)
지난 포스트 2-1탄에 이어서 작성합니다.
2-1탄에서는 실제 로또 구매 사이트인 동행복권 온라인 페이지를 띄우고,
팝업창 뜨는걸 닫고 로그인을 진행하기 직전까지 진행해보았습니다.
로그인을 하면 팝업창이 또 뜨기 때문에
로그인 코드 밑에다가 동일한 코드로 복붙하셔서 닫아주시면 됩니다.
사실 팝업은 안닫아도 되긴 하지만..
전 거슬려서 닫는거고, 다른 자동화를 진행할 때도 도움이 될만한 내용이라 넣은 거니
팝업창 닫기 싫으시면 안닫으셔도 돼요!
아 참!
그리고 팝업창이 2개가 고정으로 뜨는게 아니라
지난주에는 들어가봤더니 또 3개가 뜨더라구요.
그래서 일부 코드를 수정해서 n개가 떴을 때 n개 모두 닫는 걸로 코드를 수정했습니다.
수정된 코드는 아래와 같습니다.
[기존에 사용했던 팝업창 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()
이렇게 하면 실제 로또 구매를 위한 팝업창이 뜰겁니다.
여기에서 또 생각치 못한 난관을 만나게 되는데....후..
글이 길어져서 다음편에 또 쓰도록 하겠습니다!
'파이썬 (Python)' 카테고리의 다른 글
내 포스팅 글자 수와 이미지 갯수 파이썬으로 알아내기 (2) | 2020.07.06 |
---|---|
파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-3탄 - 개발 구현) (6) | 2020.07.04 |
파이썬 - session not created from tab crashed 에러 해결하기 (0) | 2020.06.29 |
파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-1탄 - 개발 구현) (0) | 2020.06.27 |
파이썬 - 딕셔너리 안의 리스트에서 특정 키 값만 가져오기 (4) | 2020.06.10 |