본문 바로가기
프로그래밍

파이썬 셀레니움(selenium) - iframe 제어하기

by choihyuunmin 2021. 3. 4.

파이썬에서 셀레니움으로 자동화 작업을 하다보면 iframe 태그에서 에러가 나는 부분이 있다.

iframe은 일반적으로 html태그 안에 다른 html이 있는 경우인데, 이럴 때는 일반적인 html을 제어하듯이

셀레니움을 사용하게 되면 정상적인 태그를 찾지 못해 에러가 발생하게 된다.

이럴 때는 스위치 문을 이용해서 태그를 변형해준 뒤, 다시 원래의 태그체계로 돌아와서 작업을 수행하면 

정상적으로 작동한다.

 

    content = browser.find_element_by_tag_name("iframe")
  
    browser.switch_to.frame(content)
    
    content_write = browser.find_element_by_xpath("/html/body/p")
    
    content_write.click()
    
    content_write.send_keys(molit_list[i]['description'] + "\n\n\n\n")
    
    content_write.send_keys(Keys.CONTROL,"k")
    
    browser.switch_to.default_content()
    
    

 

얼마전 작업을 하던 코드를 가져와서 설명을 하자면, content라는 변수에 iframe 태그를 찾아와서 할당해주고,

switch_to.frame() 을 통해 스위치시켜준다.

그리고 iframe태그 안에서 원하고자 하는 작업을 수행한 뒤에 다시 switch_to.default_content() 를 사용하여

원래의 태그 체계로 빠져나온다.

 

이 때 중요한 포인트는, 스위치를 사용하여 iframe태그 안으로 들어가 iframe태그 안에서 하고자 하는 작업을 

원래 밖의 태그에서 작업하듯이 명령을 내리고, 다시 default_content를 사용해서 나온다는 것을 명심하자