Selenium 에서 iFrame 처리하는 방법 Python

2022. 2. 20. 20:59Python

728x90
반응형

Selenium 으로 자동화를 하는 중에 자주 만나는 문제가 바로 iFrame 으로 구성 된 Element 를 접근하는 것이다.

우리가 일반적으로 접근하려고 하는 방식으로 iFrame 을 접근하려고 하면 오류를 마주칠 것인데

이럴 때는 Selenium 에서 제공해주는 switch_to 를 사용해서 iFrame 으로 전환을 하고

다시 원래 element 로 돌아오는 방식으로 사용을 합니다. 

 

# iFrame Youtube 재생 후 나오기
# 사용할 때 
self.iFramePlay(10)


def iFramePlay(self,sec):
    try:
        driver = self._driver
        iframe = driver.find_element_by_xpath(Script.IFRAME_ADDRESS)
        driver.switch_to.frame(iframe)
        
        # do something
        playBtn = driver.find_element_by_xpath(Script.YOUTUBE_PLAY_BUTTON)
        playBtn.click()
        time.sleep(sec) # play time
    except NoSuchElementException as e:
        self.Logger(f'error - NoSuchelementException : {e}')

    try:
        # restore
        driver.switch_to.default_content()
    except NoSuchFrameException as e:
        self.Logger(f'error - NoSuchFrameException : {e}')





728x90
반응형