• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    해결됨

셀레니움 버전 변경으로 인한 코드 변경

22.06.29 23:38 작성 조회수 1.05k

0

06:00부에서 오류가 생겨서 찾아보았음.

기존 강의에서는

elems = driver.find_elements_by_id('begin')이 정상적으로 작동되었으나 셀레니움 버전 4.3.0(최신버전)부터는 "find_element_by_* & find_elements_by"를 제거하였다. 따라서 아래와 같은 코드를 쓰면 정상 작동될 것이다.

 

elems = driver.find_elements("id", "begin")

 

전체코드

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import time

 

# 드라이버 생성

# chromedriver 설치된 경로를 정확히 기재해야 함

chromedriver = 'C:\dev_python\Webdriver/chromedriver.exe' # 윈도우 

#chromedriver = '/usr/local/Cellar/chromedriver/chromedriver' # 맥

driver = webdriver.Chrome(chromedriver)

 

# 크롤링할 사이트 호출

driver.get("https://davelee-fun.github.io/blog/crawl_html_css.html")

time.sleep(1)

# 여기에 작성해보세요

elems = driver.find_elements("id", "begin")

for index in elems:

    print(index.text)

driver.quit()

 

혹시나 헤매시는 분들을 위해 끄적여 봅니다.

 

답변 1

답변을 작성해보세요.

1

안녕하세요. 답변도우미입니다.

허걱, 본래는 해당 함수가 버전이 업데이트되면서, 새로운 함수를 제공하지만, 그렇다고 해서, 기존 함수가 동작을 안하는 경우는 극히 드물거든요. warning 메세지로 새로운 함수를 가이드하긴 하지만, 기존 함수를 동작안시키면, 관련 라이브러리를 쓴 모든 코드가 다 동작을 안하는 상황이 되기 때문에, 지원을 하는 것이 일반적입니다. 또 이런 경우가 파이썬 라이브러리에서 상당히 빈번하기도 하거든요. 그래서 아예 warning 메세지는 안보여주도록 하는 별도 명령도 있어서, 이 부분은 신경안쓰셔도 괜찮다고 전에 답변으로 설명을 드리기도 하였는데요.

오늘 갑자기 두 분께서 이야기를 하신 것을 보니, 아예 신규 버전에서는 해당 기존 함수를 못쓰게 바꾼 것 같습니다. 공지하고, 자료를 업데이트하도록 하겠습니다.

갑자기 코드가 동작을 안해서, 상당히 당황하셨을텐데, 이렇게 가이드까지 해주셔서 감사합니다.

감사합니다.