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