본문 바로가기
코딩 연습/코딩배우기

파이썬 selenium 라이브러리 - find_elements_by_* commands are deprecated.

by good4me 2021. 12. 25.

goodthings4me.tistory.com

 


최근 selenium이 업그레이드되어서, find_elements_by_* 구문 대신 find_elements() 구문을 사용하라는 경고 메시지가 노출되었다. 사용법은 큰 차이가 없는 듯...

 

selenium 라이브러리 경고 메시지에 따른 구분 사용 방법

ul = driver.find_element_by_class_name('lst_total')
lis = ul.find_elements_by_class_name('bx')

위 구문에서, 실행 결과는 정상적으로 나오는데 오류인지 경고인지 이상한 메시지가 아래처럼 나온다.

 UserWarning: find_elements_by_* commands are deprecated. Please use find_elements() instead
  warnings.warn("find_elements_by_* commands are deprecated. Please use find_elements() instead")

 

구글 검색 결과,

https://stackoverflow.com/questions/69875125/find-element-by-commands-are-deprecated-in-selenium

use find_elements()

... the find_element_by_* commands are deprecated in the latest Selenium Python libraries.


good4me.co.kr


그래서, 경고 메시지대로 find_elements_by_* 가 아니라 find_elements()를 사용하여

from selenium.webdriver.common.by import By

ul = driver.find_element(By.CLASS_NAME, 'lst_total')
lis = ul.find_elements(By.CLASS_NAME, 'bx')

이렇게 쓰니 경고가 사라졌다.


참고 사이트의 내용을 좀 요약해서 나열하면,

button = driver.find_element_by_class_name("quiz_button")
button = driver.find_element(By.CLASS_NAME, "quiz_button")

element = driver.find_element_by_id("element_id")
element = driver.find_element(By.ID, "element_id")

element = driver.find_element_by_name("element_name")
element = driver.find_element(By.NAME, "element_name")

element = driver.find_element_by_link_text("element_link_text")
element = driver.find_element(By.LINK_TEXT, "element_link_text")

element = driver.find_element_by_partial_link_text("element_partial_link_text")
element = driver.find_element(By.PARTIAL_LINK_TEXT, "element_partial_link_text")

element = driver.find_element_by_tag_name("element_tag_name")
element = driver.find_element(By.TAG_NAME, "element_tag_name")

element = driver.find_element_by_css_selector("element_css_selector")
element = driver.find_element(By.CSS_SELECTOR, "element_css_selector")

element = driver.find_element_by_xpath("element_xpath")
element = driver.find_element(By.XPATH, "element_xpath")

이렇게 사용하라는 것임

 

 

댓글