파이썬 셀레니움으로 로그인하려 하는데, 팝업 이미지 때문에 로그인버튼이 가려져 클릭이 안되는 문제 해결방법 질문.

조회수 3646회

www.happycampus.com 사이트에 자동로그인 하는 코드를 작성하려고 합니다. 그런데 가끔 예상치 못한 팝업이지지가 뜨는 경우가 있습니다. 해당 사이트에서 이벤트 등을 공지하기 위해 가끔 사용하는 모양인듯. 문제는 이런 팝업 이미지가 뜨게 되면 그 이미지때문에 로그인버튼이 가려진 탓인지 버튼 클릭이 안돼 다음과 같은 에러가 발생합니다.

selenium.common.exceptions.WebDriverException: Message: unknown error: Element ... is not clickable at point (831, 682). Other element would receive the click:

이 경우 어떻게 문제를 해결해야 할까요? driver.execute_script("arguments[0].click();", login_elm)처럼 자바스크립트를 사용해봐도 안되네요. 물론 팝업이미지가 뜨지 않는 경우에는 정상적으로 자동로그인됩니다.

그리고 팝업이미지라고 표현해서 오해하실 수가 있는데, 팝업창은 아닙니다. 마치 팝업창처럼 보여서 그렇게 표현한 것입니다. 실제로는 해당 url의 html코드 속에 img태그로 표현된 것입니다. 문제는 화면에 떡 하니 이미지가 떠서 그 뒤의 엘리멘트가 가려져 버린다는 것.(제 경우에는 로그인버튼이 이미지에 가려져서 클릭이 안되는 경우인듯)

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 간단히 해당 레이어의 display 속성을 none 으로 줘서 제거하면 됩니다.

    from selenium import webdriver
    
    driver = webdriver.Chrome('CHROME_DRIVER_PATH')
    driver.get('https://www.happycampus.com/')
    driver.execute_script("document.getElementById('fontBadaEventPopup').style.display='none';")
    
    • 팝업이미지가 생길 경우를 고려한다면 어떻게 코딩을 해야 할까요? 알 수 없는 사용자 2019.4.19 08:50
    • id 가 fontBadaEventPopup 인 항목이 있는지 보면 되겠죠. 그리고 팝업이미지가 아니고 div 에요. div가 block 되면서 가려지는 것인데 fontBadaEventPopup 항목을 무조건 none 처리를 하면(생기나 안생기나 none 이므로) 질문과 같은 문제는 해결이 됩니다. 정영훈 2019.4.19 09:20

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)