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进程,再执行清除浏览历史