实际使用python selenium 进行自动化时,出现浏览器清除缓存的方法出现的问题,之后定位发现是相关的页面元素中被shadow-root(open)包裹,普通的方式无法进行元素的定位,经过一段时间的寻找解决方案和尝试,问题最终解决,就此也给大家分享一下,避免走一些弯路:
实际的代码如下(使用的是pycharm):
def logout(driver):
driver.get(“chrome://settings/clearBrowserData”)
time.sleep(2)
js = “return document.querySelector(‘settings-ui’).shadowRoot.querySelector(‘settings-main’).”
“shadowRoot.querySelector(‘settings-basic-page’).shadowRoot.querySelector(‘settings-privacy-page’).”
“shadowRoot.querySelector(‘settings-clear-browsing-data-dialog’).shadowRoot.querySelector(’#clearBrowsingDataConfirm’)”
driver.execute_script(js).click()
time.sleep(5)
部分代码的解释:
document.querySelector(‘settings-ui’)
从根节点的dom中根据标签名称找到第一个shadowRoot的父节点元素,然后逐层使用这样的方式进行定位
querySelector(’#clearBrowsingDataConfirm’) 表示通过标签id的方式进行定位