파이썬, 셀레니움 특정 요소 기다리기 & 자바스크립트로 로그인하기
글. 수알치 오상문
다음 예제는 특정 사이트에 로그인하는 예제이다.
여러분이 원하는 사이트에서는 진한 파란색 부분의 주소나 요소 선택 부분이 변경되어야 한다.
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
myid = 'myid'
mypw = 'password!'
login_page = r"로그인_사이트_URL"
browser = webdriver.Chrome()
driver = browser # browser를 driver라는 이름으로 사용하는 경우도 많아서 복제했다.
# 이제는 browser 또는 driver라는 이름을 모두 사용할 수 있다.
browser.implicitly_wait(20) # 정상 페이지 로딩 최대 허용 시간
time.sleep(2) # 로딩한 상태더라도 화면에 뿌려주는 작업 시간도 필요
try:
browser.get(url=login_page)
# 1. time.sleep(2) # 로딩한 상태더라도 화면에 뿌려주는 작업 시간도 필요 그러나 sleep은 낭비가 심하다.
# 2. 필요한 요소가 나타날 때까지 기다리자. 일반적으로 아래 세 방법을 사용한다.
# 참고로 이 예제는 차라리 버튼이 나타날 때까지 기다리는 게 더 좋은 방법이다.
#el = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "id")))
#el = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="id"]')))
el = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#id')))
browser.execute_script(f"document.getElementById('id').value = '{myid}'")
time.sleep(0.5)
browser.execute_script(f"document.getElementById('pw').value = '{mypw}'")
time.sleep(0.5)
el = browser.find_element(By.XPATH, '//*[@id="frmNIDLogin"]/ul/li/div/div[7]')
el.click()
except Exception as e:
print(e)
finally:
input("Quit?")
browser.quit()
'웹 크롤링, 스크래핑' 카테고리의 다른 글
웹 사이트 HTML 코드를 다운로드하여 html 파일로 저장하기 (1) | 2022.07.30 |
---|---|
셀레니움, Firefox 웹드라이버 다운로드 사이트 (0) | 2022.07.28 |
파이썬, 셀레니움 기능을 클래스로 만드는 예 (0) | 2022.07.24 |
파이썬, 셀레니움 자바스크립트로 로그인 아이디 비밀번호 입력 예제 (0) | 2022.07.22 |
파이썬, 셀레니움 캘린더 선택 예제 (0) | 2022.07.21 |