Python Selenium 4 최신 버전 문법 정리
Selenium 4는 웹 자동화 및 스크래핑을 위한 강력한 도구입니다. Selenium 4에서는 여러 가지 새로운 기능과 개선된 문법이 도입되었습니다. 이 글에서는 Python에서 Selenium 4를 사용하는 최신 문법을 정리합니다.
1. 설치
Selenium 4를 사용하려면 최신 버전을 설치해야 합니다.
bash
pip install selenium
2. WebDriver 설정
Selenium 4에서는
webdriver-manager
패키지를 사용하여 드라이버를 자동으로 관리할 수 있습니다.
2.1 WebDriver 설치
bash
pip install webdriver-manager
2.2 WebDriver 사용 예시
```python from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service
WebDriver 설정 및 초기화
service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service)
웹 페이지 열기
driver.get("https://www.google.com")
드라이버 종료
driver.quit() ```
3. 새로운 기능 및 개선된 문법
3.1 새로운 DevTools 프로토콜
Selenium 4는 Chrome DevTools 프로토콜을 지원하여 브라우저와의 상호작용을 더 쉽게 만들었습니다.
```python from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service
service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service)
DevTools 세션 시작
driver.execute_cdp_cmd("Network.enable", {}) driver.execute_cdp_cmd("Page.navigate", {"url": "https://www.google.com"})
driver.quit() ```
3.2 새로운 find_element 및 find_elements
Selenium 4에서는 새로운 방식으로 요소를 찾을 수 있습니다.
```python from selenium.webdriver.common.by import By
driver.get("https://www.google.com")
단일 요소 찾기
search_box = driver.find_element(By.NAME, "q")
다중 요소 찾기
links = driver.find_elements(By.TAG_NAME, "a") ```
3.3 상수로서의 By 클래스
이전 버전에서는 문자열로 요소를 찾았지만, 이제는
By
클래스를 사용합니다.
```python from selenium.webdriver.common.by import By
search_box = driver.find_element(By.NAME, "q") ```
3.4 새롭게 개선된 wait 기능
Selenium 4에서는 기다리는 기능이 더 개선되었습니다.
```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
driver.get("https://www.google.com")
요소가 나타날 때까지 대기
search_box = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.NAME, "q")) ) ```
4. 예제: 구글 검색 자동화
Selenium 4를 사용하여 간단한 구글 검색 자동화 예제를 만들어 보겠습니다.
```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
WebDriver 설정 및 초기화
service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service)
try: # 구글 페이지 열기 driver.get("https://www.google.com")
# 검색창 찾기
search_box = driver.find_element(By.NAME, "q")
검색어 입력 및 검색
search_box.send_keys("Selenium 4")
search_box.send_keys(Keys.RETURN)
검색 결과 대기
results = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, "h3"))
)
첫 번째 검색 결과 출력
for result in results:
print(result.text)
finally: # 드라이버 종료 driver.quit() ```
5. 추가 팁
5.1 스크린샷 찍기
python
driver.save_screenshot('screenshot.png')
5.2 쿠키 관리
```python
쿠키 추가
driver.add_cookie({"name": "key", "value": "value"})
쿠키 가져오기
cookies = driver.get_cookies() print(cookies) ```
5.3 브라우저 창 크기 조절
```python
창 크기 설정
driver.set_window_size(1024, 768)
최대화
driver.maximize_window() ```
FAQ
Q1: Selenium 4에서 브라우저 드라이버를 자동으로 관리할 수 있나요?
A1: 네,
webdriver-manager
패키지를 사용하여 브라우저 드라이버를 자동으로 설치하고 관리할 수 있습니다. 이 패키지를 사용하면 코드 내에서 수동으로 드라이버 경로를 설정할 필요가 없습니다.
Q2: Selenium 4의 DevTools 프로토콜이란 무엇인가요?
A2: DevTools 프로토콜은 브라우저와 상호작용할 수 있는 Chrome의 도구입니다. Selenium 4는 이 프로토콜을 지원하여 네트워크 활동을 모니터링하거나 페이지를 더 정밀하게 제어할 수 있습니다.
Q3: Selenium 4에서 요소를 찾는 새로운 방법은 무엇인가요?
A3: Selenium 4에서는
find_element
및
find_elements
메서드에서
By
클래스를 사용하여 요소를 찾습니다. 예를 들어,
find_element(By.NAME, "q")
와 같은 방식으로 사용할 수 있습니다.
Q4: Selenium 4의 기다리는 기능은 어떻게 개선되었나요?
A4: Selenium 4의 기다리는 기능은 더 직관적이고 사용하기 쉬워졌습니다.
WebDriverWait
와
expected_conditions
모듈을 사용하여 요소가 특정 조건을 만족할 때까지 기다릴 수 있습니다.
Q5: Selenium 4에서 스크린샷을 찍는 방법은 무엇인가요?
A5:
driver.save_screenshot('screenshot.png')
메서드를 사용하여 현재 페이지의 스크린샷을 PNG 파일로 저장할 수 있습니다.
Q6: Selenium 4에서 쿠키를 관리하는 방법은 무엇인가요?
A6:
driver.add_cookie({"name": "key", "value": "value"})
메서드로 쿠키를 추가할 수 있으며,
driver.get_cookies()
메서드로 현재 페이지의 모든 쿠키를 가져올 수 있습니다.
정리 표
항목 | 설명 | 예제 코드 |
---|---|---|
WebDriver 설정 | 브라우저 드라이버 자동 설치 및 초기화 |
webdriver.Chrome(service=service)
|
DevTools 프로토콜 | Chrome DevTools 프로토콜 지원 |
driver.execute_cdp_cmd("Network.enable", {})
|
요소 찾기 | By 클래스를 사용한 요소 찾기 |
driver.find_element(By.NAME, "q")
|
기다리는 기능 | WebDriverWait와 expected_conditions를 사용한 대기 |
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "q")))
|
스크린샷 찍기 | 현재 페이지의 스크린샷 저장 |
driver.save_screenshot('screenshot.png')
|
쿠키 관리 | 쿠키 추가 및 가져오기 |
driver.add_cookie({"name": "key", "value": "value"})
|
브라우저 창 크기 조절 | 창 크기 설정 및 최대화 |
driver.set_window_size(1024, 768)
|
이 글을 통해 Selenium 4의 최신 문법과 기능을 이해하고, 실제 프로젝트에 활용할 수 있기를 바랍니다. Selenium 4를 사용하여 다양한 웹 자동화 작업을 효율적으로 수행해보세요.
댓글