1. 오류상황
셀레니움이 4.3.0 버전으로 업데이트 되면서
더이상 find_element_by_* 종류를 사용할 수 없게 되었다.
사용하려고하면 다음과 같은 오류 메시지를 뱉어버린다.
AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector(xpath, class_name, id, link_text)'
2. 해결방법
find_element_by_css_selector
find_element_by_xpath
find_element_by_class_name
find_element_by_id
find_element_by_link_text
find_element_by_name
-> 이제 find_element 한개로 통일 되었다.
find_element 메소드 사용방법은 다음과 같다.
from selenium.webdriver.common.by import By
driver.find_element(By.CSS_SELECTOR, "CSS선택자")
driver.find_element(By.XPATH, "XPATH")
driver.find_element(By.NAME, "NAME속성값")
driver.find_element(By.CLASS_NAME, "CLASS속성값")
driver.find_element(By.LINK_TEXT, "LINK텍스트")
driver.find_element(By.ID, "ID속성값")
라이브러리 개발도 다른 환경에 좌지우지되니까 코드 업데이트를 하는 것은 당연하지만,
사용하고 있는 사람들 생각을 최대한 해주면 좋겠다.
라이브러리 개발자 까는 것 아니다, 너무 고맙게 잘쓰고 있고
항상 감사하는 마음이다.
라이브러리 개발자들은
기존에 만들어진 문서나 강의자료를 생각해서라도, 잘 사용하고 있는 코드를 삭제하는 행위는
정말 불가피한 경우를 제외하고는 하지말아 주었으면.. 좋겠다.
(셀레니움 쪽이 특히 자주 바뀌는 것 같다)
온라인 강의와 유튜브 영상에서 수강생들이 똑같이 따라하는데 안된다고,
댓글을 주구창장 단다. 오프라인 수업에서도 해당 업데이트 때문에 20분이상 디버깅하느라 고생했다.
결론, 강의를 하는 사람들도 생각해주세요
안녕하세요.
코딩을 가장 쉽게 알려주는 크리에이터, 스타트코딩입니다.
제 글이 마음에 드셨다면,
저의 유튜브, 온라인 강의도 슬쩍 구경하고 가시죠.
https://www.youtube.com/channel/UCHwhZ7HPBhUh2IscPSL0pHA
https://class101.page.link/xq57
댓글