101 lines
3.8 KiB
Python
101 lines
3.8 KiB
Python
# 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
|
|
from selenium.common.exceptions import TimeoutException
|
|
# from config import WEBSITE_URL
|
|
from utils import log
|
|
import time
|
|
import logging
|
|
|
|
# 로거 인스턴스 가져오기
|
|
logger = logging.getLogger('default_logger')
|
|
def login(driver, login_info):
|
|
"""로그인 프로세스를 수행합니다."""
|
|
|
|
# login_info에서 로그인 정보 추출
|
|
per_email = login_info["per_email"]
|
|
per_password = login_info["per_password"]
|
|
per_em_email = login_info["per_em_email"]
|
|
per_em_password = login_info["per_em_password"]
|
|
per_mode = login_info["per_mode"]
|
|
|
|
|
|
logger.debug("웹사이트에 접속 중...")
|
|
driver.get("https://www.percenty.co.kr")
|
|
# time.sleep(1)
|
|
|
|
logger.debug("로그인 버튼 클릭...")
|
|
# login_button = driver.find_element(By.CSS_SELECTOR, ".signList > .ant-btn-default > span")
|
|
# login_button.click()
|
|
|
|
|
|
try:
|
|
login_button = WebDriverWait(driver, 30).until(
|
|
EC.presence_of_element_located((By.CSS_SELECTOR, ".signList > .ant-btn-default > span"))
|
|
)
|
|
login_button.click()
|
|
except TimeoutException:
|
|
logger.debug("로그인 버튼을 찾는데 실패했습니다.")
|
|
|
|
# try:
|
|
# login_button = WebDriverWait(driver, 30).until(
|
|
# EC.presence_of_element_located((By.CSS_SELECTOR, ".signList > .ant-btn-default > span"))
|
|
# # EC.presence_of_element_located(By.XPATH, "//div[@id='root']/div/div/header/div/div/div/button[2]/span")
|
|
# )
|
|
# login_button.click()
|
|
# except:
|
|
# logger.debug("로그인 중 오류 발생: 요소를 찾을 수 없습니다.")
|
|
|
|
time.sleep(1)
|
|
|
|
logger.debug("이메일 주소 입력...")
|
|
try:
|
|
email_input = WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.CSS_SELECTOR, ".ant-input:nth-child(4)"))
|
|
)
|
|
email_input.send_keys(per_email)
|
|
|
|
except:
|
|
logger.debug("이메일 주소 찾는 중 오류 발생: 요소를 찾을 수 없습니다.")
|
|
# email_input = driver.find_element(By.CSS_SELECTOR, ".ant-input:nth-child(4)")
|
|
time.sleep(0.1)
|
|
|
|
if per_mode:
|
|
logger.debug("사용자 패스워드 입력...")
|
|
password_input = driver.find_element(By.CSS_SELECTOR, ".ant-input:nth-child(1)")
|
|
password_input.send_keys(per_password)
|
|
time.sleep(0.1)
|
|
|
|
else:
|
|
logger.debug("스위치 버튼 클릭...")
|
|
switch_button = driver.find_element(By.CSS_SELECTOR, ".ant-switch-handle")
|
|
switch_button.click()
|
|
time.sleep(0.1)
|
|
|
|
logger.debug("직원 아이디 입력...")
|
|
employee_id_input = driver.find_element(By.CSS_SELECTOR, ".ant-input:nth-child(2)")
|
|
employee_id_input.send_keys(per_em_email)
|
|
time.sleep(0.1)
|
|
|
|
logger.debug("직원 패스워드 입력...")
|
|
password_input = driver.find_element(By.CSS_SELECTOR, ".ant-input:nth-child(1)")
|
|
password_input.send_keys(per_em_password)
|
|
time.sleep(0.1)
|
|
|
|
logger.debug("로그인 버튼 클릭...")
|
|
login_button = driver.find_element(By.CSS_SELECTOR, ".ant-btn-primary")
|
|
login_button.click()
|
|
time.sleep(2)
|
|
|
|
# 신규 상품 등록 페이지로이동
|
|
logger.debug("신규상품등록 버튼 클릭...")
|
|
try:
|
|
new_product_button = WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.XPATH, "//span[contains(.,'신규 상품 등록')]"))
|
|
)
|
|
except:
|
|
logger.debug("신규상품등록 버튼 찾는 중 오류 발생: 요소를 찾을 수 없습니다.")
|
|
# new_product_button = driver.find_element(By.XPATH, "//span[contains(.,'신규 상품 등록')]")
|
|
new_product_button.click()
|
|
time.sleep(2) |