얼마전에 동행복권 사이트가 리뉴얼 되고나서 기존에 로또구매자동화를 해놨었던 코드가 정상적으로 작동하지 않고 있었다. 그렇다고 직접 나가서 또 사기에는 귀찮아서 미루고 미루다가 이제야 수정했다.
from playwright.sync_api import Playwright, sync_playwright
import time
# 동행복권 아이디와 패스워드를 설정
USER_ID = 'id'
USER_PW = 'password'
# 구매 개수를 설정
COUNT = 5
def run(playwright: Playwright) -> None:
# 브라우저 실행
browser = playwright.chromium.launch(headless=True)
context = browser.new_context()
page = context.new_page()
# 로그인 페이지 이동
page.goto("https://dhlottery.co.kr/login")
# 로그인
page.fill("#inpUserId", USER_ID)
page.fill("#inpUserPswdEncn", USER_PW)
with page.expect_navigation():
page.click("#btnLogin")
time.sleep(5)
# 로또 구매 페이지 이동
page.goto("https://ol.dhlottery.co.kr/olotto/game/game645.do")
time.sleep(3)
# "비정상적인 방법으로 접속하였습니다" 팝업이 있으면 닫기
popup = page.locator("#popupLayerAlert")
if popup.is_visible(timeout=3000):
popup.get_by_role("button", name="확인").click()
# 자동번호발급 클릭
page.click("text=자동번호발급")
time.sleep(1)
# 구매할 개수 선택
page.select_option("select", str(COUNT))
time.sleep(1)
# 확인 버튼 클릭
page.click("#btnSelectNum")
time.sleep(1)
# 구매하기 버튼 클릭
page.click("#btnBuy")
time.sleep(1)
# "구매하시겠습니까?" 팝업에서 확인 클릭
page.click("input[onclick='javascript:closepopupLayerConfirm(true);']")
time.sleep(3)
# 구매 완료 후 닫기
page.click("#closeLayer")
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)