반응형

<참조> https://pythondocs.net/selenium/%EC%85%80%EB%A0%88%EB%8B%88%EC%9B%80-%ED%81%AC%EB%A1%A4%EB%9F%AC-%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9%EB%B2%95

 

파이썬, 셀레니움 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

 

Shadow Dom 이란?

웹 컴포넌트란 ?  - Custom Element  - Shadow Dom  - HTML Template  - ES Module 이 네 가지 명세를 결합해서  - 스타일링이 캡슐화되고 (Shadow Dom),  - 스탬프를 찍어내듯이 여러번 사용 가능한 (HTML..

leeproblog.tistory.com

 

반응형

+ Recent posts