모듈 사용을 위한 코드 작성
from webbrowser import Chrome
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager # 크롬 업데이트 시 자동으로 업데이트하는 코드
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
크롬 브라우저 자동 종료 및 불필요한 에러 메시지 제거 코드
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])
크롬 드라이버 자동으로 최신 버전으로 다운로드하는 코드
service = Service(executable_path = ChromeDriverManager().install())
driver = webdriver.Chrome(service = service, options = chrome_options)
URL 불러오기
driver.get("가져오고 싶은 url 작성")
URL 켠 후, 3초 대기(브라우저가 로딩 진행 시 동작을 수행할 수 없기 때문에 작성하는 코드)
driver.implicitly_wait(3)
원도우 최대화
driver.maximize_window()
header 버튼 찾고 버튼 클릭 (로그인 페이지로 이동하는 코드 구현)
- WebDriveWait를 사용하여 header 로그인 버튼 동작이 수행되기까지 대기해주는 코드
- find_element(By.CLASS_NAME, "찾는 요소").click() > 클래스 요소로 해당 버튼을 찾고, 클릭 이벤트를 주어서 클릭하게 하는 코드
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "헤더 로그인 버튼")))
driver.find_element(By.CLASS_NAME, "헤더 로그인 버튼").click()
driver.implicitly_wait(5)
아이디 / 비밀번호 입력
- send_keys("")를 이용하여 이메일 / 패스워드를 입력란을 찾아준 후 입력 가능하게 하는 코드
# 아이디 입력
driver.find_element(By.CSS_SELECTOR, "[placeholder = 'Email']").send_keys("bumjin")
# 비밀번호 입력
driver.find_element(By.CSS_SELECTOR, "[placeholder = 'Password']").send_keys("123123")
로그인 진행 코드
- try 문을 이용하여 유효한 값 / 비유효한 값 구분
- 예외처리를 이용
- 로그인 성공 시 로그인 성공
- 로그인 실패 시 rase 키워드를 이용한여 ecept문 강제 실행
# 로그인 진행 (비유요한 값을 입력했을 때, 로그인 실패 except문 실행)
try:
driver.find_element(By.CLASS_NAME, "로그인 버튼").click()
# login_error 변수에 웹사이트 에러메시지 요소 할당
login_error = driver.find_element(By.XPATH, "로그인 에러 요소")
# 로그인 버튼 클릭 시 에러메시지가 바로 안나오니까 대기 시간 필요
WebDriverWait(driver, 10).until(EC.element_located_to_be_selected(login_error))
# login_error가 안나오면, 로그인 성공
if not login_error.is_displayed():
print("로그인 성공")
# login_error가 나오면, 로그인 실패가 되어야 하므로 raise 키워드로 except문 강제 실행
else:
raise
# 로그인 실패 시 실행 문
except Exception as e:
print("로그인 실패")
print(e)