반응형
<참조> https://www.selenium.dev/documentation/webdriver/browser/frames/
파이썬, 셀레니움에서 버튼이나 엘리먼트 접근 못하는 경우, iframe
글. 수알치 오상문
다음과 같은 페이지가 있고 버튼에 접근하려고 하지만 실패합니다. 요즘은 웹사이트를 만들 때 iframe 구조를 사용하지 않지만 예전 사이트 중에는 이런 iframe 구조를 사용하는 경우가 있습니다.
<div id="modal">
<iframe id="buttonframe" name="myframe" src="https://seleniumhq.github.io">
<button>Click here</button>
</iframe>
</div>
driver.find_element(By.TAG_NAME, 'button').click() <--- 실패!!!
iframe에 있는 요소에 접근하려면 다음처럼 처리합니다.
# iframe 선택 방법 1: css 셀렉터로 접근
iframe = driver.find_element(By.CSS_SELECTOR, "#modal > iframe")
driver.switch_to.frame(iframe)
# iframe 선택 방법 2: id로 접근 (가장 처음 것으로 접근)
driver.switch_to.frame('buttonframe')
# iframe 선택 방법 3: name으로 접근 (가장 처음 것으로 접근)
driver.switch_to.frame('mframe')
# iframe 선택 방법 4: iframe 태그 중에서 인덱스로 접근
iframe = driver.find_elements_by_tag_name('iframe')[1]
driver.switch_to.frame(iframe)
#------------------------------------------------------------
# iframe에서 요소를 다룬다. (예; 버튼 클릭)
driver.find_element(By.TAG_NAME, 'button').click()
#------------------------------------------------------------
# iframe 빠져나가기, 기본 페이지로 돌아가기
driver.switch_to.default_content()
반응형
'웹 크롤링, 스크래핑' 카테고리의 다른 글
파이썬, 셀레니움 윈도우 이동, 크기 제어 (0) | 2022.07.16 |
---|---|
파이썬, 셀레니움 브라우저 창과 탭 이동 제어 (0) | 2022.07.16 |
파이썬, 셀레니움 쿠키 제어 예제 (0) | 2022.07.16 |
셀레니움, WebDriverWait 및 에러 처리, 드라이버 옵션 예제 (0) | 2022.07.16 |
셀레니움 User-Agent (0) | 2022.07.16 |