66 lines
3.0 KiB
Python
66 lines
3.0 KiB
Python
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
|
|
import logging
|
|
|
|
# 로거 인스턴스 가져오기
|
|
logger = logging.getLogger('default_logger')
|
|
def click_element(driver, element_type, element_identifier, wait_time=10, click_type='normal'):
|
|
"""
|
|
주어진 요소를 찾아 클릭합니다.
|
|
|
|
Parameters:
|
|
- driver: WebDriver 인스턴스
|
|
- element_type: 요소를 찾는 방법 ('CSS_SELECTOR', 'CLASS_NAME', 'XPATH', 'ID')
|
|
- element_identifier: 요소의 식별자
|
|
- wait_time: 요소가 나타날 때까지 대기하는 시간 (초)
|
|
- click_type: 클릭 방식 ('normal' 또는 'js')
|
|
- visibility_of_element_located : 사용자가 실제로 볼 수 있고, 상호작용할 수 있는 요소에 대한 작업을 진행하기 전에 요소의 가시성을 보장
|
|
- presence_of_element_located : 페이지 로딩이 완료되었는지 확인하거나, 특정 요소가 DOM에 추가되었는지를 확인할 때
|
|
"""
|
|
try:
|
|
element = WebDriverWait(driver, wait_time).until(
|
|
EC.visibility_of_element_located((getattr(By, element_type), element_identifier))
|
|
# EC.presence_of_element_located((getattr(By, element_type), element_identifier))
|
|
)
|
|
|
|
if click_type == 'js':
|
|
driver.execute_script("arguments[0].click();", element)
|
|
else:
|
|
element.click()
|
|
|
|
logger.debug(f"'{element_identifier}' 요소를 성공적으로 클릭함.")
|
|
|
|
except TimeoutException:
|
|
logger.debug(f"'{element_identifier}' 요소를 {wait_time} 초 이내에 찾지 못함.")
|
|
|
|
except Exception as e:
|
|
logger.debug(f"예상치 못한 오류 발생: {e}")
|
|
|
|
def return_element(driver, element_type, element_identifier, wait_time=10):
|
|
"""
|
|
주어진 요소를 찾아 클릭합니다.
|
|
|
|
Parameters:
|
|
- driver: WebDriver 인스턴스
|
|
- element_type: 요소를 찾는 방법 ('CSS_SELECTOR', 'CLASS_NAME', 'XPATH', 'ID')
|
|
- element_identifier: 요소의 식별자
|
|
- wait_time: 요소가 나타날 때까지 대기하는 시간 (초)
|
|
- visibility_of_element_located : 사용자가 실제로 볼 수 있고, 상호작용할 수 있는 요소에 대한 작업을 진행하기 전에 요소의 가시성을 보장
|
|
- presence_of_element_located : 페이지 로딩이 완료되었는지 확인하거나, 특정 요소가 DOM에 추가되었는지를 확인할 때
|
|
"""
|
|
try:
|
|
element = WebDriverWait(driver, wait_time).until(
|
|
EC.visibility_of_element_located((getattr(By, element_type), element_identifier))
|
|
)
|
|
logger.debug(f"'{element}' 요소를 성공적으로 찾음.")
|
|
return element
|
|
|
|
except TimeoutException:
|
|
logger.debug(f"'{element_identifier}' 요소를 {wait_time} 초 이내에 찾지 못함.")
|
|
|
|
except Exception as e:
|
|
logger.debug(f"예상치 못한 오류 발생: {e}")
|
|
|