Python

Python selenium- 동행복권 홈페이지 로그인 / 충전페이지 이동 자동화

Baetab 2023. 4. 23. 23:20

사실 그냥 클릭 몇번하면 되지만 그냥 만들어봄

 

동행복권 로그인 / 충전 금액선택 / 충전 버튼까지
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import os
from tkinter import *


def start_process():
    # 크롬 웹드라이버 불러오기(같은폴더에 넣음)
    chromedriver_path = os.path.join(
        os.path.dirname(os.path.abspath(__file__)), "chromedriver"
    )
    driver = webdriver.Chrome(executable_path=chromedriver_path)

    # 로그인 페이지 접속
    driver.get("https://www.dhlottery.co.kr/user.do?method=login&returnUrl=")

    # 아이디 , 비번 입력받은 변수
    username = entry_username.get()
    password = entry_password.get()
    window.destroy()

    # 1. 페이지 접속이 완료되면 아이디 비번 입력
    username_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "input#userId"))
    )
    password_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='password']"))
    )

    username_field.send_keys(username)
    password_field.send_keys(password)

    # 로그인 버튼 클릭
    login_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn_common.lrg.blu"))
    )
    login_button.click()
    # 메인페이지로 돌아오면 충전 버튼 클릭
    time.sleep(2)
    recharge_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn_common.sml"))
    )
    recharge_button.click()

    # 2초 기다린후 5000원 선택 value값 자기가 원하는 값으로 변경
    time.sleep(2)
    select_amount = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, "select#Amt"))
    )
    select_amount.find_element(By.CSS_SELECTOR, "option[value='5000']").click()

    # 충전 버튼 클릭
    ok_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable(
            (By.CSS_SELECTOR, "button[onclick='settleBankStart()']")
        )
    )

    ok_button.click()

    # 브라우저 종료여부 묻기
    close_browser = input("브라우저를 종료하시겠습니까? (yes/no): ").lower().strip()

    if close_browser == "yes":
        driver.quit()


# 메인 윈도우
window = Tk()
window.title("동행복권 자동화")
window.geometry("260x150")

# 아이디 테이블
Label(window, text="아이디:").grid(row=0, column=0, padx=10, pady=10, sticky=W)
entry_username = Entry(window)
entry_username.grid(row=0, column=1, padx=10, pady=10, sticky=W)
# 비밀번호 테이블
Label(window, text="비밀번호:").grid(row=1, column=0, padx=10, pady=10, sticky=W)
entry_password = Entry(window, show="*")
entry_password.grid(row=1, column=1, padx=10, pady=10, sticky=W)

# 시작 버튼
start_button = Button(window, text="매크로시작", command=start_process)
start_button.grid(row=2, column=1, padx=10, pady=10, sticky=E)

# 루프 시작
window.mainloop()