본문 바로가기
조아하는거/PC

셀레니움 변경된 문법에 대해 알아보자 (AttributeError: 'WebDriver' object has no attribute 'find_element_by_id')

by 시무정 2023. 2. 7.
반응형

 

 

 


"기존 문법은 호환되지 않습니다.."


 

저는 이제 막 코딩을 시작한 초보지만,

셀레니움을 통해 크롤링을 하다가 업그레이드를 했더니 메서드가 변경된 것을 알고..!!

 

공부를 하고자 글을 써봅니다.

 

AttributeError: 'WebDriver' object has no attribute 'find_element_by_name'

AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'

AttributeError: 'WebDriver' object has no attribute 'find_element_by_tag_name'

제가 맞닥드린 오류는 위와 같습니다.

 

우선...

 

버전3와 버전4의 차이점을 위주로 서술해보겠습니다.


1. 설치는 그대로 하면 됨

shell 에서 ...

pip install selenium
pip install selenium --upgrade

위 2개 하면 버전4 바로 깔립니다.

 

대신 함수 정의? 할 때...

from selenium.webdriver.common.by import By

일부만 임포트해서 쓰시는 분들은 이런 식으로 by 정의를 해줘야 한다고 하네요..

 


2.  뭐가 달라졌는지?

 

기존 (버전 3)

driver.find_element_by_class_name('className')
driver.find_element_by_css_selector('.className')
driver.find_element_by_id('elementId')
driver.find_element_by_link_text('linkText')
driver.find_element_by_name('elementName')
driver.find_element_by_partial_link_text('partialText')
driver.find_element_by_tag_name('elementTagName')
driver.find_element_by_xpath('xPath')

 

변경 (버전 4)

driver.find_element(By.CLASS_NAME, 'className')
driver.find_element(By.CSS_SELECTOR, '.className')
driver.find_element(By.ID, 'elementId')
driver.find_element(By.LINK_TEXT, 'linkText')
driver.find_element(By.NAME, 'elementName')
driver.find_element(By.PARTIAL_LINK_TEXT, 'partialText')
driver.find_element(By.TAG_NAME, 'elementTagName')
driver.find_element(By.XPATH, 'xPath')

 


그럼 20,000..

반응형

댓글