selenium python으로 네이버 카페 댓글 등 다양한 부분을 자동화해 사용하고 있다.

    1년 넘게 잘 사용하고 있었는데 어제 갑자기 오류가 발생하서 3시간이 걸려 해결했다.

    아주 허무하게!

     

    이런 오류를 직면하는 사람이 있을 것 같아서 블로그에 남겨본다.

    최소한 나 같은 뻘짓은 안했으면 좋겠어서.

     

    사건개요

    윈도우 11이 나왔다길래 사무실에 설치를 했는데 괜찮아서 집에도 설치를 하려고 했다.

    집에 설치하려고 하니 사양 제한에 걸려서 해제해주는 레지스트리 등록을 통해서 설치했는데 이렇게 하면 드라이버를 포맷하고 새롭게 설치해야 해서 모든 프로그램이 삭제가 되었다.

     

    아무튼 설치 후 파이썬 등을 새로 설치하고 프로그램을 돌리려고 하는데 갑자기 오류가 뜨는 것이다.

    방금 전까지만 해도 잘되던 프로그램인데.

     

    윈도우11 사양 상관없이 우회설치

    혹시 우회설치가 궁금하다면 위 블로그를 참고하기 바란다.

     

     셀레니움 오류 구문

    Attribute 'webdriver' object has no attribu 'switch_to_frame'

     

    이런 오류가 계속 떴다.

    처음에는 복사해서 구글링을 해봤는데 동일한 문제나 해결점을 찾지 못했다.

     

     

    뻘짓

    코드에 문제가 생겼으면 코드를 살펴봐야 하는데 윈도우 설치 때문에 그랬다고 생각해서 계속 그쪽을 살펴봤다.

    user 이름을 원래 한글로 안하는데 어제 한글로 했어서 그것 때문인가 해서 다시 영어로 바꿨는데 그래도 안되서 다시 설치했는데 그래도 안됐다.

     

    결국 이것저것 다 해보다가 2시간 반 가량 의미없이 시간을 보내고 코드를 살펴보기 시작했다.

     

    문제 해결

    네이버카페 셀레니움으로 자동화할 경우 iframe을 변경해줘야 한다는 것은 다들 알 것이다.

     

    처음엔 내 코드만 살펴보면서 이것저것 해봤지만 답이 없는 것 같아서 webdriver 코드를 유심히 살펴보니 이전과 달라졌다는 것을 알 수 있었다.

     

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    
    # 이전 프레임 변경
    driver.switch_to_frame("cafe_main")
    
    drvier.switch_to_default_content()
    
    # 최신 프레임 변경
    driver.switch_to.frame("cafe_main")
    
    driver.switch_to.default_content()

    기존에는 switch_to_frame이 함수형태로 작동했는데 이제는 switch_to라는 클래스 안에서 작동하게 변경되었다.

    결국 최신 문법이 변경되면서 일어난 해프닝이었다.

     

    지금도 selenium frame에 대해 검색되면 이전 문법으로 적혀있는 곳이 많다.

    혹시 자동화하다가 같은 부분에서 막혔다면 최신 문법을 적용해보기 바란다.

     

    Photo by Christopher Gower on Unsplash

     

    ※ 함께 보면 좋은 글

     

    셀레니움 네이버 로그인 캡챠 피하기 클릭!

    유튜브 재생목록 총 재생시간 구하는 코드 클릭!

    셀레니움 네이버 검색광고 API 활용 잔액확인 하는 법 클릭!

    크롬 굵은 폰트 번짐 해결하는 방법 클릭!