파이썬, 셀레니움 shadow dom 처리 예제 (크롬 사용 기록 삭제)
# shadow dom 엘리먼트 열기
# css Selector 이용하여 element의 HTML 내용 가져온다
element = driver.execute_script("return document.querySelector('#syndi_powerpage > div').shadowRoot").get_attribute('innerHTML')
# shadow dom 처리를 이용하여, 크롬 인터넷 기록 삭제하는 예제
def expand_shadow_element(element):
shadow_root = driver.execute_script('return arguments[0].shadowRoot', element)
return shadow_root
driver.get('chrome://settings/clearBrowserData')
elem = driver.find_element_by_css_selector('body > settings-ui')
elem1 = expand_shadow_element(elem)
elem1 = elem1.find_element_by_id('main')
elem2 = expand_shadow_element(elem1)
elem2 = elem2.find_element_by_tag_name('settings-basic-page')
elem3 = expand_shadow_element(elem2)
elem3 = elem3.find_element_by_tag_name('settings-privacy-page')
elem4 = expand_shadow_element(elem3)
elem4 = elem4.find_element_by_tag_name('settings-clear-browsing-data-dialog')
elem5 = expand_shadow_element(elem4)
# 인터넷 사용기록 삭제 버튼 클릭을 위한 엘레먼트 따로 저장
elem5forconfirmelem = expand_shadow_element(elem4)
elem5 = elem5.find_element_by_id('clearFromBasic')
elem6 = expand_shadow_element(elem5)
elem6 = elem6.find_element_by_id('dropdownMenu')
# 전체기간 선택
elem6.find_element_by_css_selector('option[value="4"]').click()
# 인터넷 사용기록 삭제 버튼 클릭
elem5forconfirmelem.find_element_by_id('clearBrowsingDataConfirm').click()
[참고] Shadow DOM이란
https://leeproblog.tistory.com/185
'웹 크롤링, 스크래핑' 카테고리의 다른 글
파이썬, 셀레니움 스크롤 예제 (0) | 2022.07.17 |
---|---|
파이썬, 셀레니움 XHR 데이터 확인 예제 (0) | 2022.07.17 |
파이썬, 셀레니움 예외 처리 (0) | 2022.07.17 |
파이썬, 셀레니움 연속 작업 Actions 예제 (0) | 2022.07.16 |
파이썬, 셀레니움 응답 기다리기 (0) | 2022.07.16 |