파이썬 WebDriver 명령어 사용법 및 설명
파이썬 Selenium WebDriver는 웹 브라우저를 자동화하기 위한 강력한 도구입니다. 다양한 명령어를 사용하여 웹 페이지와 상호작용하고 테스트를 수행할 수 있습니다
1.자주 사용되는 명령어
driver.get(url): 지정된 URL로 웹 페이지를 엽니다.
driver.title: 현재 페이지의 제목을 가져옵니다.
driver.current_url: 현재 페이지의 URL을 가져옵니다.
driver.page_source: 현재 페이지의 HTML 소스 코드를 가져옵니다.
driver.close(): 현재 브라우저 창을 닫습니다.
driver.quit(): 모든 브라우저 창을 닫고 WebDriver 세션을 종료합니다.
2.요소 찾기
find_element(By.ID, "id"): ID로 요소를 찾습니다.
find_element(By.NAME, "name"): name 속성으로 요소를 찾습니다.
find_element(By.CLASS_NAME, "class"): 클래스 이름으로 요소를 찾습니다.
find_element(By.TAG_NAME, "tag"): 태그 이름으로 요소를 찾습니다.
find_element(By.LINK_TEXT, "text"): 링크 텍스트로 요소를 찾습니다.
find_element(By.PARTIAL_LINK_TEXT, "text"): 부분 링크 텍스트로 요소를 찾습니다.
find_element(By.XPATH, "xpath"): XPath 표현식으로 요소를 찾습니다.
find_element(By.CSS_SELECTOR, "css"): CSS 선택자로 요소를 찾습니다.
3.요소와 상호작용
element.click(): 요소를 클릭합니다.
element.send_keys("text"): 요소에 텍스트를 입력합니다.
element.clear(): 요소의 내용을 지웁니다.
element.text: 요소의 텍스트를 가져옵니다.
element.is_displayed(): 요소가 표시되는지 확인합니다.
element.is_enabled(): 요소가 활성화되어 있는지 확인합니다.
element.is_selected(): 요소가 선택되어 있는지 확인합니다.
4. 대기
time.sleep(seconds): 지정된 시간 동안 대기합니다.
WebDriverWait(driver, timeout): 요소가 나타날 때까지 또는 시간 초과될 때까지 대기합니다.
JavaScript 실행
driver.execute_script(script, *args): JavaScript 코드를 실행합니다.
예제 1) 자주 사용되는 명령어
✔ 예시
from selenium import webdriver
# Chrome WebDriver 객체 생성
driver = webdriver.Chrome()
# Google 홈페이지 URL
url = "https://www.google.com/"
# 1. driver.get(url): 지정된 URL로 웹 페이지를 엽니다.
driver.get(url) # Google 홈페이지 열기
# 2. driver.title: 현재 페이지의 제목을 가져옵니다.
title = driver.title
print("페이지 제목:", title) # "Google" 출력
# 3. driver.current_url: 현재 페이지의 URL을 가져옵니다.
current_url = driver.current_url
print("현재 URL:", current_url) # "https://www.google.com/" 출력
# 4. driver.page_source: 현재 페이지의 HTML 소스 코드를 가져옵니다.
# (출력 내용이 길기 때문에 주석 처리)
# page_source = driver.page_source
# print("페이지 소스 코드:", page_source)
# 5. driver.close(): 현재 브라우저 창을 닫습니다.
driver.close() # 현재 탭/창 닫기
# 6. driver.quit(): 모든 브라우저 창을 닫고 WebDriver 세션을 종료합니다.
# (이미 창이 닫혔으므로 주석 처리)
# driver.quit()
예제 2) 요소 찾기
✔ 예시
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.example.com/") # 예시 페이지로 대체 필요
# 1. find_element(By.ID, "id") - ID로 요소 찾기
element_by_id = driver.find_element(By.ID, "element-id") # "element-id"로 요소 찾기
# 2. find_element(By.NAME, "name") - name 속성으로 요소 찾기
element_by_name = driver.find_element(By.NAME, "element-name") # "element-name"으로 요소 찾기
# 3. find_element(By.CLASS_NAME, "class") - 클래스 이름으로 요소 찾기
element_by_class = driver.find_element(By.CLASS_NAME, "element-class") # "element-class"로 요소 찾기
# 4. find_element(By.TAG_NAME, "tag") - 태그 이름으로 요소 찾기
element_by_tag = driver.find_element(By.TAG_NAME, "a") # "a" 태그 (링크) 찾기
# 5. find_element(By.LINK_TEXT, "text") - 링크 텍스트로 요소 찾기
element_by_link_text = driver.find_element(By.LINK_TEXT, "Click Here") # "Click Here" 텍스트 링크 찾기
# 6. find_element(By.PARTIAL_LINK_TEXT, "text") - 부분 링크 텍스트로 요소 찾기
element_by_partial_link_text = driver.find_element(By.PARTIAL_LINK_TEXT, "Click") # "Click" 포함 링크 찾기
# 7. find_element(By.XPATH, "xpath") - XPath 표현식으로 요소 찾기
element_by_xpath = driver.find_element(By.XPATH, "//button[@class='btn']") # XPath로 버튼 요소 찾기
# 8. find_element(By.CSS_SELECTOR, "css") - CSS 선택자로 요소 찾기
element_by_css_selector = driver.find_element(By.CSS_SELECTOR, "input.form-control") # CSS 선택자로 입력 요소 찾기
# 찾은 요소들로 필요한 작업 수행 (예: 클릭, 텍스트 가져오기 등)
driver.quit()
예제 3).요소와 상호작용
✔ 예시
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.example.com/") # 예시 페이지로 대체 필요
# 1. element.click() - 요소 클릭
button = driver.find_element(By.ID, "submit-button")
button.click() # 버튼 클릭
# 2. element.send_keys("text") - 요소에 텍스트 입력
input_field = driver.find_element(By.NAME, "username")
input_field.send_keys("myusername") # 입력 필드에 "myusername" 입력
# 3. element.clear() - 요소 내용 지우기
input_field.clear() # 입력 필드 내용 지우기
# 4. element.text - 요소의 텍스트 가져오기
heading = driver.find_element(By.TAG_NAME, "h1")
heading_text = heading.text
print("Heading Text:", heading_text) # h1 태그의 텍스트 출력
# 5. element.is_displayed() - 요소가 표시되는지 확인
image = driver.find_element(By.CLASS_NAME, "logo")
is_image_displayed = image.is_displayed()
print("Image is displayed:", is_image_displayed) # 이미지가 표시되는지 여부 출력 (True/False)
# 6. element.is_enabled() - 요소가 활성화되어 있는지 확인
submit_button = driver.find_element(By.ID, "submit-button")
is_button_enabled = submit_button.is_enabled()
print("Button is enabled:", is_button_enabled) # 버튼이 활성화되어 있는지 여부 출력 (True/False)
# 7. element.is_selected() - 요소가 선택되어 있는지 확인
checkbox = driver.find_element(By.NAME, "agree")
is_checkbox_selected = checkbox.is_selected()
print("Checkbox is selected:", is_checkbox_selected) # 체크박스가 선택되어 있는지 여부 출력 (True/False)
driver.quit()
예제 4) 대기
✔ 예시
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
driver = webdriver.Chrome()
driver.get("https://www.example.com/") # 예시 페이지로 대체 필요
# 1. time.sleep(seconds) - 지정된 시간 동안 대기
time.sleep(5) # 5초 동안 대기
# 2. WebDriverWait(driver, timeout) - 요소가 나타날 때까지 대기 (최대 10초)
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
except TimeoutException:
print("요소를 찾을 수 없습니다.")
# 3. driver.execute_script(script, *args) - JavaScript 코드 실행
# 예: 페이지 스크롤
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 다른 JavaScript 예시
# - 요소의 스타일 변경: driver.execute_script("arguments[0].style.backgroundColor = 'yellow'", element)
# - 클릭 이벤트 트리거: driver.execute_script("arguments[0].click();", element)
driver.quit()
기본 사용 예제
✔ 예시
from selenium import webdriver
# Chrome WebDriver 생성
driver = webdriver.Chrome()
# Firefox WebDriver 생성
driver = webdriver.Firefox()
✔ 예시
from selenium import webdriver
# Chrome WebDriver 객체 생성
driver = webdriver.Chrome()
# 웹 페이지 URL
url = "https://www.google.com/"
# driver.get(url) 메서드를 사용하여 지정된 URL로 이동
driver.get(url) # Google 홈페이지로 이동
# 현재 페이지 제목 출력
print(driver.title) # "Google" 출력
# 5초 대기
time.sleep(5) # 페이지 로딩 시간을 위해 잠시 대기
# 검색창 요소 찾기
search_box = driver.find_element(By.NAME, "q")
# 검색어 입력
search_box.send_keys("Selenium WebDriver") # 검색창에 "Selenium WebDriver" 입력
# 검색 버튼 클릭
search_button = driver.find_element(By.NAME, "btnK")
search_button.click() # 검색 버튼 클릭
# 잠시 대기
time.sleep(5) # 검색 결과 페이지 로딩 시간을 위해 잠시 대기
# 브라우저 닫기
driver.quit() # WebDriver 세션 종료 및 브라우저 닫기