CodeGym /자바 코스 /Python SELF KO /HTML 속성을 이용한 요소 검색: id, class

HTML 속성을 이용한 요소 검색: id, class

Python SELF KO
레벨 35 , 레슨 3
사용 가능

1. 요소 검색의 기본

요소 검색 방법

본격적으로 코드에 뛰어들기 전에 Selenium을 사용하여 웹 페이지에서 요소를 검색하는 방법을 이해하는 게 중요해. Selenium은 요소를 검색할 수 있는 몇 가지 편리한 방법을 제공해:

  • find_element_by_id(): 고유 식별자 (id)를 사용하여 요소를 검색.
  • find_element_by_name(): name 속성을 통해 요소를 검색.
  • find_element_by_class_name(): 특정 class가 지정된 요소를 검색.
  • find_element_by_tag_name(): 태그 이름을 사용하여 요소를 검색. 예를 들어 div, p, a.

간단한 예제부터 시작해 보자 — id를 사용하여 요소를 검색. "마법 버튼"이라는 레이블이 있는 버튼을 찾는 상황을 상상해봐:

Python

from selenium import webdriver

# 드라이버 설정 및 브라우저 열기
driver = webdriver.Chrome()
driver.get('https://example.com')

# id를 사용하여 요소 검색
magic_button = driver.find_element_by_id('magic_button_id')

# 찾은 요소와 작업하기 (예: 텍스트 추출)
print(magic_button.text)

# 세션 종료
driver.quit()

찾은 요소와 작업하기

요소를 찾았다면 이제 그걸로 뭘 할지 정할 차례야. Selenium의 text 같은 메서드를 사용하여 요소의 텍스트 내용을 가져오거나, get_attribute('attribute_name')를 이용해 특정 속성 값을 추출할 수 있어.

예를 들어, 링크 요소가 있고, 어느 URL로 연결되는지 알아내고 싶다고 해보자. 이렇게 하면 돼:

Python

# 링크가 포함된 요소 검색
link_element = driver.find_element_by_class_name('link_class')

# href 속성에서 URL 추출
link_url = link_element.get_attribute('href')
print(f'이 링크는 여기를 가리킵니다: {link_url}')

2. find_element_by_id() 메서드

find_element_by_id() 메서드는 요소를 웹 페이지에서 검색할 때 가장 빠르고 신뢰할 수 있는 방법 중 하나야. 이 메서드는 고유한 id 속성으로 요소를 검색할 수 있어. HTML에서 id 속성은 고유한 식별자이기 때문에 이 메서드는 반드시 하나의 필요한 요소를 반환할 거라고 확신할 수 있지.

사용 예제:

Python

element = driver.find_element_by_id("submit-button")

이 예제에서 Selenium은 id="submit-button"을 가진 요소를 검색하고 element 변수에 저장해. 이런 방법은 버튼, 입력 필드, 폼과 같은 고유한 요소를 검색할 때 유용해.

언제 사용해야 할까?

요소에 고유한 id가 있는 경우, find_element_by_id() 메서드를 사용하는 게 추천돼. 이 메서드는 빠르고 정확하게 요소에 접근할 수 있으니까.

2. find_element_by_name() 메서드

find_element_by_name() 메서드는 name 속성을 사용하여 요소를 검색해. 이는 폼과 입력 필드에서 자주 사용되는데, 특히 요소들이 동일한 클래스나 id를 가지고 있을 수 있지만 각기 다른 name를 가지는 경우 유용하지. 하지만 id와 달리 name 속성은 고유할 필요가 없기 때문에 같은 name를 가진 여러 요소가 페이지에 있을 수도 있어.

사용 예제:

Python

element = driver.find_element_by_name("username")

이 코드는 name="username"을 가진 요소를 검색해. 보통 로그인 폼에서 사용자 이름을 입력하는 필드를 찾는 데 사용되지.

언제 사용해야 할까?

페이지의 요소에 고유한 id는 없고, name 속성이 있을 때 이 메서드가 유용해. 입력 폼에서는 요소들이 종종 name를 기준으로 식별되기 때문에 이 방법이 효과적이야.

3. find_element_by_class_name() 메서드

find_element_by_class_name() 메서드는 요소의 클래스 (class)를 사용하여 요소를 검색해. CSS와 작업할 때 유용하며, 동일한 스타일링이 적용된 요소를 검색할 수 있어. 하지만 여러 요소가 같은 class를 가질 수 있기 때문에, 특정 요소 하나를 찾고 싶으면 고유한 클래스를 명시하거나 다른 메서드를 사용해야 해.

사용 예제:

Python

element = driver.find_element_by_class_name("main-header")

이 예제에서 Selenium은 첫 번째로 main-header 클래스를 가진 요소를 검색해.

언제 사용해야 할까?

find_element_by_class_name()는 고유한 idname가 없는 경우, 스타일링 특성을 기준으로 요소를 검색할 때 유용해.

4. find_element_by_tag_name() 메서드

find_element_by_tag_name() 메서드는 div, p, a, input 같은 태그 이름으로 요소를 검색해. 페이지 구조를 태그를 통해 탐색하기 쉬운 경우에 특히 유용하지.

사용 예제:

Python

element = driver.find_element_by_tag_name("h1")

여기에서 Selenium은 첫 번째 h1 태그를 가진 요소를 검색해. 보통 페이지의 제목에 사용되지.

언제 사용해야 할까?

find_element_by_tag_name()는 제목, 이미지, 단락 같은 요소를 찾을 때 적합하지만, 한 페이지에 동일한 태그가 많을 수 있으므로 특정 요소를 지정하기에는 적합하지 않을 수도 있어.

5. 특징 및 오류

다음으로 넘어가기 전에, 다양한 HTML 구조에서 발생할 수 있는 문제를 잠깐만 짚어보자. 버튼이나 이미지 같은 요소는 고유한 idclass가 없을 수 있어. 이럴 때 XPath와 CSS 셀렉터 같은 좀 더 고급 검색 방법이 필요할 수 있지. 만약 지금 당장 이런 요소들과 마주친다면, 당황하지 마. 이건 웹 자동화의 재미있는 부분 중 하나일 뿐이야.

셀렉터의 취약성

idclass 같은 속성을 사용할 때, 이들이 변경될 수 있다는 점을 기억하자. id가 업데이트되면 해당 요소를 찾을 수 없게 될 수도 있어. 특히 동적으로 생성된 페이지에서는 식별자가 랜덤일 수 있어. 해결책? 더 안정적인 속성을 사용하거나 복합적인 접근법을 활용해봐.

6. 실용적인 응용

이제 id, 클래스, 이름을 사용하여 요소를 검색하는 방법을 알았어. 이 지식은 웹 페이지와의 상호작용을 자동화할 때 큰 도움이 돼. 성공적으로 찾은 요소는 양식을 채우거나 버튼을 클릭하거나 정보를 추출하는 데 사용할 수 있어 — 이런 작업은 너의 작업 속도를 크게 높이고 반복적인 작업을 없앨 수 있지.

회사에서 매일 직원이 같은 양식을 채우는 데 10분을 소모한다고 상상해봐. 여기에서 Selenium이 등장해, 모든 걸 몇 분 만에 처리하고 너는 아침 커피를 즐길 수 있어.

Selenium은 웹 애플리케이션 테스트, 사이트 변경 모니터링, 심지어 잊어버린 비밀번호 복구 등 많은 현실적인 사례에서 활용돼. 이걸 활용하면 반복적인 작업에서 너를 해방시키고 더 중요한 일에 집중할 수 있게 도와줄 거야.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION