python+selenium+execute_script自动清除谷歌浏览器缓存

2023-04-30

import wmi
import os
import signal
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.options import Options
class timing(object):
    def __init__(self):
        option = Options()
        option.add_argument('--no-sandbox')        
        #option.add_argument('--headless')
        option.add_argument('--disable-dev-shm-usage')
        option.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging'])
        option.add_argument("--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data")
        self.driver = webdriver.Chrome(options=option)
        self.driver.get('chrome://settings/clearBrowserData')
    def open(self):
        sleep(3)
        # # 定位清除缓存按钮
        clearButton = self.driver.execute_script("return document.querySelector('settings-ui').shadowRoot.querySelector('settings-main').shadowRoot.querySelector('settings-basic-page').shadowRoot.querySelector('settings-section > settings-privacy-page').shadowRoot.querySelector('settings-clear-browsing-data-dialog').shadowRoot.querySelector('#clearBrowsingDataDialog').querySelector('#clearBrowsingDataConfirm')")

        # # 赋值时间范围筛选的js
        js = 'return document.querySelector("body > settings-ui").shadowRoot.querySelector("#main").shadowRoot.querySelector("settings-basic-page").shadowRoot.querySelector("#basicPage > settings-section > settings-privacy-page").shadowRoot.querySelector("settings-clear-browsing-data-dialog").shadowRoot.querySelector("#clearFromBasic").shadowRoot.querySelector("#dropdownMenu")'        
        # # 查询时间范围
        Select(self.driver.execute_script(js)).select_by_value('4')
        
        # 浏览记录
        js = 'return document.querySelector("body > settings-ui").shadowRoot.querySelector("#main").shadowRoot.querySelector("settings-basic-page").shadowRoot.querySelector("#basicPage > settings-section:nth-child(9) > settings-privacy-page").shadowRoot.querySelector("settings-clear-browsing-data-dialog").shadowRoot.querySelector("#browsingCheckboxBasic").shadowRoot.querySelector("#checkbox")'
        checkHistory = self.driver.execute_script(js)
        ck1 = checkHistory.get_attribute("checked")        
        if ck1==None:
            checkHistory.click()        
        


        
        sleep(3)





        # # 清除缓存
        clearButton.click()
        sleep(6)
        # # 关闭
        self.driver.close()
        pass


def killPrcessInfo():

    ppid = os.getpid()
    print(str(ppid))

    c = wmi.WMI ()

    for process in c.Win32_Process ():
        if process.Name=="chrome.exe":
            print(process.ProcessId, process.Name)
            if process.ProcessId==ppid:
                pass
            else:
                try:
                    os.kill(int(process.ProcessId),signal.SIGABRT)
                except PermissionError:
                    pass
                except OSError:
                    pass
                else:
                    pass





if __name__ == '__main__':
    
    killPrcessInfo()
    test = timing()
    test.open()


参考 https://blog.csdn.net/qq_41272260/article/details/120566213

https://blog.csdn.net/weixin_46200082/article/details/120356894


#如果浏览器已经打开,会报错selenium.common.exceptions.InvalidArgumentException: 
Message: invalid argument: user data directory is already in use, please specify a 
unique value for --user-data-dir argument, or don't use --user-data-dir

这里先kill掉已经打开的chrome进程,再执行清除浏览历史


联系信息

QQ:1827566828
Email: 1827566828@qq.com
Web: https://www.yynet.wang

留言