파이썬 웹자동화 (2) 웹 요소 선택 : 셀레니움 find_element 사용법

이번 포스팅에서는 파이썬 웹 자동화 두 번째 글로 웹 요소 선택, 셀레니움 find_element 사용법 위주로 정리해보았습니다.

참고로 앞선 포스팅에서는 (1) 셀레니움 설치 및 기본 설정 (웹 드라이버 자동 설치 방법)에 대해 정리해보았습니다.

이번 포스팅에서는 앞선 셀레니움 설치 및 기본 설정 방법에 이어 가장 파이썬 웹 자동화를 위한 가장 기본이 되는 웹 요소 선택 방법 – 셀레니움 find_element에 대해 정리해보려고 합니다.

실은 22년 말 셀레니움4로 업데이트가 되면서 셀레니움 find_element 또한 문법이 변경되어 많은 혼란을 가져다준 메서드이기도 합니다. 해당 사항에 대해서는 앞선 포스팅에 정리한 바 있습니다.

이번 포스팅에서는 셀레니움 find_element의 각 메서드에 대해서 상세히 정리해보고, 실질적으로 특정 웹페이지에서 셀레니움 find_element를 활용하여 웹 요소를 추출하는 방법에 대해 정리해보았습니다.


셀레니움4 변경점

셀레니움(Selenium)은 웹 테스트와 웹 자동화를 위해 널리 사용되는 파이썬 라이브러리로 가장 많이 사용되는 것은 역시 웹 요소를 선택하는 셀레니움 find_element 요소가 아닐까 싶습니다.

참고로 셀레니움 find_element 문법이 22년 말 셀레니움4로 업데이트되면서 아래와 같이 변경되었는데요,

셀레니움4에서는, 기존 셀레니움3에서 사용되었던

find_element_by_***()

메서드를 모두

find_element(By.***, ***) 와 같은 형태로 변경하였습니다.

셀레니움 문법 변경

참고로 아래와 같은 추가 선언 또한 필요합니다.

from selenium.webdriver.common.by import By


셀레니움 find_element 개요

우선 웹 요소 선택을 위한 셀레니움 find_element를 사용하기 위해서는 아래와 같이 셀레니움 라이브러리를 임포트하고 웹드라이버를 설정이 필요합니다.

1
2
3
4
5
6
7
#IT매뉴얼(itmanual.net) 파이썬 웹 자동화 (2) 웹 요소 선택 : 셀레니움 find_element 사용법
 
from selenium import webdriver
from selenium.webdriver.common.by import By
 
# 웹드라이버 설정
driver = webdriver.Chrome()

이와 함께 웹 요소를 선택하기 위한 주요 메서드는 다음과 같습니다.

  1. find_element(By.ID, ‘***’): ID 속성을 사용하여 웹 요소를 찾습니다.
  2. find_element(By.NAME, ‘***’): NAME 속성을 사용하여 웹 요소를 찾습니다.
  3. find_element(By.CLASS_NAME, ‘***’): CLASS 속성을 사용하여 웹 요소를 찾습니다.
  4. find_element(By.TAG_NAME, ‘***’): 태그 이름을 사용하여 웹 요소를 찾습니다.
  5. find_element(By.CSS_SELECTOR, ‘***’): CSS 선택자를 사용하여 웹 요소를 찾습니다.
  6. find_element(By.XPATH, ‘***’): XPATH를 사용하여 웹 요소를 찾습니다.

아래 세션에서는 실제 HTML 코드 예시를 통해 각 메서드를 사용하여 웹 요소를 선택하는 방법을 정리해보겠습니다.


셀레니움 find_element 상세 예시

아래와 같은 HTML 코드에서 각 웹 요소에 대한 추출 방법을 정리하면 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
<head>
  <title>IT매뉴얼 웹페이지 자동화 (2) 셀레니움 웹요소 선택 예시</title>
</head>
<body>
  <h1 id=“title”>IT매뉴얼 (2) 셀레니움 웹요소 선택 예시</h1>
  <form name=“login”>
    <input type=“text” name=“username” class=“input-box” placeholder=“Username” />
    <input type=“password” name=“password” class=“input-box” placeholder=“Password” />
    <input type=“submit” value=“Login” />
  </form>
  <ul id=“menu”>
    <li class=“menu-item”><a href=“#”>Home</a></li>
    <li class=“menu-item”><a href=“#”>About</a></li>
    <li class=“menu-item”><a href=“#”>Contact</a></li>
  </ul>
</body>
</html>

참고의 위의 페이지는 아래와 같이 나타납니다.

셀레니움 find_element

이제 각 메서드를 사용하여 웹 요소를 선택해 보겠습니다.

1. ID 속성으로 웹 요소 찾기

title = driver.find_element(By.ID, 'title')

2. NAME 속성으로 웹 요소 찾기

username_input = driver.find_element(By.NAME, 'username')
password_input = driver.find_element(By.NAME, 'password')

3. CLASS 속성으로 웹 요소 찾기

input_boxes = driver.find_elements(By.CLASS_NAME, 'input-box')

4. 태그 이름으로 웹 요소 찾기

form = driver.find_element(By.TAG_NAME, 'form')

5. CSS 선택자로 웹 요소 찾기

menu_items = driver.find_elements(By.CSS_SELECTOR, '#menu .menu-item')

6. XPATH로 웹 요소 찾기

login_button = driver.find_element(By.XPATH, '//input[@type="submit"]')

위에서 설명한 각 메소드를 모두 사용해서 코드를 만들어보면 아래와 같습니다. 아래 코드는 각 웹 요소를 선택하고 해당 웹 요소의 텍스트나 속성 값을 출력하는 예시 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#IT매뉴얼(itmanual.net) 파이썬 웹 자동화 (2) 웹 요소 선택 : 셀레니움 find_element 사용법
 
from selenium import webdriver
from selenium.webdriver.common.by import By
 
# 웹드라이버 설정
driver = webdriver.Chrome()
 
# itmanual_net_2강_웹자동화.html 파일에 접근
driver.get(‘file:///C:/파일위치경로/itmanual_net_2강_웹자동화.html’)
 
# ID 속성을 사용하여 웹 요소 선택 후 출력
title = driver.find_element(By.ID, ‘title’)
print(f“Title: {title.text}”)
 
# NAME 속성을 사용하여 웹 요소 선택 후 출력
username_input = driver.find_element(By.NAME, ‘username’)
password_input = driver.find_element(By.NAME, ‘password’)
print(f“Username input: {username_input.get_attribute(‘placeholder’)}”)
print(f“Password input: {password_input.get_attribute(‘placeholder’)}”)
 
# CLASS 속성을 사용하여 웹 요소 선택 후 출력
input_boxes = driver.find_elements(By.CLASS_NAME, ‘input-box’)
for i, input_box in enumerate(input_boxes):
    print(f“Input box {i+1}: {input_box.get_attribute(‘placeholder’)}”)
 
# 태그 이름을 사용하여 웹 요소 선택 후 출력
form = driver.find_element(By.TAG_NAME, ‘form’)
print(f“Form: {form.get_attribute(‘name’)}”)
 
# CSS 선택자를 사용하여 웹 요소 선택 후 출력
menu_items = driver.find_elements(By.CSS_SELECTOR, ‘#menu .menu-item’)
for i, menu_item in enumerate(menu_items):
    print(f“Menu item {i+1}: {menu_item.text}”)
 
# XPATH를 사용하여 웹 요소 선택 후 출력
login_button = driver.find_element(By.XPATH, ‘//input[@type=”submit”]’)
print(f“Login button: {login_button.get_attribute(‘value’)}”)
 
# 웹드라이버 종료
driver.quit()

위의 예시를 파이썬 – VSCODE를 통해 실행시키면 아래와 같은 결과가 나타납니다.

셀레니움 find_element

위의 예시에서 각 메서드를 사용하여 웹 요소를 선택하는 방법을 정리해보았는데요, 이를 바탕으로 셀레니움을 활용하여 웹 자동화 프로젝트를 진행할 수 있습니다.

이번 포스팅에서는 셀레니움 find_element의 각 메서드에 대해서 상세히 정리해보고, 실질적으로 특정 웹페이지에서 셀레니움 find_element를 활용하여 웹 요소를 추출하는 방법에 대해 정리해보았습니다.


앞선 포스팅에서 정리한 파이썬 프로그래밍 관련 글은 아래와 같습니다.

셀레늄, 셀레니움 문법 변경 및 에러 해결 3초 끝내기 (AttributeError 에러 해결)

[파이썬 x VSCODE 기초] ① 아나콘다 설치 및 가상환경 설정 3분 끝내기

Leave a Comment