본문 바로가기
기타/오류 뿌수기

[셀레니움 오류] AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector' 오류해결

by climba 2022. 6. 27.

파이썬에서 selenium을 써서 크롤링을 할 때 아래와 같이 find_element_by_css_selector을 쓰면 오류가 나오는 경우가 있다.

enter_btn = wd.find_element_by_css_selector("#menu2091_obj16 > form > div > div > div._areaButton > div > span > input[type=submit]").click()

(참고로 wd는 웹 드라이버 변수명이다.)

 

AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector'  이 오류는 말 그대로 WebDriver에 'find_element_by_css_selector' 라는 함수가 없기 때문에 나타나는 것 이다.

 

WebDriver에는 find_element라는 함수만 있고 이의 첫번째 매개변수로 By.css_selector 과 같이 뭐를 경로로 사용할지 선택하면 된다. 그리고 두변째 매개변수에 경로를 넣으면 오류 없이 사용 할 수 있다.

 

이때, 반드시 By를 import 해줘야 한다. 안해주면 NameError: name 'By' is not defined 이런 오류가 뜰 것이다.

from selenium.webdriver.common.by import By
enter_btn = wd.find_element(By.CSS_SELECTOR, "#menu2091_obj16 > form > div > div > div._areaButton > div > span > input[type=submit]").click()

 

 

By.ID 태그의 id값으로 추출
By.NAME 태그의 name값으로 추출
By.XPATH 태그의 경로로 추출
By.LINK_TEXT 링크 텍스트값으로 추출
By.PARTIAL_LINK_TEXT 링크 텍스트의 자식 텍스트 값을 추출
By.TAG_NAME 태그 이름으로 추출
By.CLASS_NAME 태그의 클래스명으로 추출
By.CSS_SELECTOR css선택자로 추출

참고로 element 는 하나의, elements 는 여러개의 값을 가져오고 싶을때 사용하면 된다.

댓글