언젠가 부터 파이썬 Selenium 을 돌리는데 아래 경고 메시지가 표시되기 시작했다.
DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
이 경고 메시지는 Selenium 이 4.* 으로 업데이트 되면서 그동안 우리가 잘 써오던 driver.find_element_by_id(), find_element_by_css_selector() 등이 deprecated 됐다. 쉽게 말해 문법이 바뀌어서 다른 방법을 적용해야 한다.
우선 import 부터 하자
from selenium.webdriver.common.by import By
각 변경된 내용은 아래와 같다.
driver.find_element_by_id("element_id")
driver.find_element(By.ID, "element_id")
driver.find_element_by_name("element_name")
driver.find_element(By.NAME, "element_name")
driver.find_element_by_tag_name("element_tag_name")
driver.find_element(By.TAG_NAME, "element_tag_name")
driver.find_element_by_css_selector("element_css_selector")
driver.find_element(By.CSS_SELECTOR, "element_css_selector")
driver.find_element_by_class_name("class_name")
driver.find_element(By.CLASS_NAME, "class_name")
driver.find_element_by_link_text("element_link_text")
driver.find_element(By.LINK_TEXT, "element_link_text")
driver.find_element_by_partial_link_text("element_partial_link_text")
driver.find_element(By.PARTIAL_LINK_TEXT, "element_partial_link_text")
driver.find_element_by_xpath("element_xpath")
driver.find_element(By.XPATH, "element_xpath")
그리고 driver.find_elements_* 를 사용하던 경우는 아래와 같이 s 만 더 붙여주면 된다.
driver.find_elements_by_id("element_id")
driver.find_elements(By.ID, "element_id")
driver.find_elements_by_name("element_name")
driver.find_elements(By.NAME, "element_name")
driver.find_elements_by_tag_name("element_tag_name")
driver.find_elements(By.TAG_NAME, "element_tag_name")
driver.find_elements_by_css_selector("element_css_selector")
driver.find_elements(By.CSS_SELECTOR, "element_css_selector")
driver.find_elements_by_class_name("class_name")
driver.find_elements(By.CLASS_NAME, "class_name")
driver.find_elements_by_link_text("element_link_text")
driver.find_elements(By.LINK_TEXT, "element_link_text")
driver.find_elements_by_partial_link_text("element_partial_link_text")
driver.find_elements(By.PARTIAL_LINK_TEXT, "element_partial_link_text")
driver.find_elements_by_xpath("element_xpath")
driver.find_elements(By.XPATH, "element_xpath")
기존 find_element_by_* 이 방식도 당분간은 계속 사용해도 되지만, 언젠가는 사용이 중지되어 에러가 나게 될 것이니
검색한 김에 수정해보자.