페이지에 iframe이 있다면 iframe 내 Element는 직접 접근 안된다.
먼저 접근하려는 Element가 있는 iframe으로 전환 후 Xpath로 접근하여 처리하고 다시 빠져 나온다.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_checkbox')
# iframe id값을 이용해 프레임 전환
driver.switch_to.frame('iframeResult')
# Xpath로 해당 checkbox/radio button 접근 후 클릭
elem = driver.find_element_by_xpath('//*[@id="vehicle1"]')
# 체크박스가 선택 안되어 있다면 선택
if elem.is_selected() == False:
elem.click()
# 전환했던 iframe의 상위로 전환 (원래 페이지로 빠져 나옴)
driver.switch_to.default_content()
# 참고 내용
# 만약 select 태그면 option의 Xpath값을 찾는다.
# elem = driver.find_element_by_xpath('//*[@id="cars"]/option[4]')
# option의 text값으로 찾는 방법도 있다.
# elem = driver.find_element_by_xpath('//*[@id="cars"]/option[text()="Audi"]')
# option의 text값 중 일부 일치 찾기
# elem = driver.find_element_by_xpath('//*[@id="cars"]/option[contains(text(), "Au")]')
'RPA > Python' 카테고리의 다른 글
[selenium] 페이지 로딩까지 대기 (0) | 2021.05.06 |
---|---|
[selenium] 동적 페이지 스크롤 (0) | 2021.05.06 |
[selenium] Xpath 등을 이용하여 Element 동작 처리하기 (0) | 2021.05.05 |
[selenium] Headless로 처리하기 (0) | 2021.05.05 |
[selenium] 브라우저 및 Handle 컨트롤 (0) | 2021.05.05 |