Selenium启动Chrome版本与本地不一致,无法清除本地浏览器历史
问题描述
我尝试通过Selenium自动化清除Chrome浏览器历史,但发现Selenium启动的Chrome实例与日常使用的本地Chrome不同。手动打开本地Chrome时浏览历史仍存在,而Selenium启动的实例无历史记录且不缓存访问过的网站,我需要实现清除本地Chrome的历史记录。
当前使用代码
from selenium import webdriver import undetected_chromedriver as UC import time from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains # Start Chrome browser CHROMEDRIVER = UC.Chrome() def start_driver(): driver = UC.Chrome() delete_cache(driver) return driver def delete_cache(driver): driver.execute_script("window.open('')") # Create a separate tab than the main one driver.switch_to.window(driver.window_handles[-1]) # Switch window to the second tab driver.get('chrome://settings/clearBrowserData') # Open your chrome settings. perform_actions(driver, Keys.TAB + Keys.ENTER) # Tab to the time select and key down to say "All Time" then go to the Confirm button and press Enter time.sleep(2) driver.close() # Close that window driver.switch_to.window(driver.window_handles[0]) # Switch Selenium controls to the original tab to continue normal functionality. def perform_actions(driver, keys): actions = ActionChains(driver) actions.send_keys(keys) time.sleep(2) print('Performing Actions!') actions.perform() if __name__ == '__main__': driver = start_driver()
解决方案
Selenium默认会创建临时Chrome用户数据目录,因此操作的不是本地日常使用的Chrome环境。要清除本地Chrome历史,需让Selenium加载本地Chrome的用户数据目录。
步骤1:获取本地Chrome用户数据目录路径
- Windows:
C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data - macOS:
~/Library/Application Support/Google/Chrome - Linux:
~/.config/google-chrome
步骤2:修改代码加载本地用户数据
替换启动Chrome的逻辑,添加用户数据目录参数,调整清除操作的按键序列以适配实际界面:
from selenium import webdriver import undetected_chromedriver as UC import time from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains def start_driver(): # 配置Chrome选项,加载本地用户数据目录 options = webdriver.ChromeOptions() # 替换为你自己的用户数据路径,以下是Windows示例 options.add_argument(r"user-data-dir=C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data") # macOS示例:options.add_argument(r"user-data-dir=/Users/你的用户名/Library/Application Support/Google/Chrome") # Linux示例:options.add_argument(r"user-data-dir=/home/你的用户名/.config/google-chrome") # 启动带本地用户数据的Chrome driver = UC.Chrome(options=options) delete_cache(driver) return driver def delete_cache(driver): driver.execute_script("window.open('')") driver.switch_to.window(driver.window_handles[-1]) driver.get('chrome://settings/clearBrowserData') # 执行清除操作的按键序列,适配Chrome设置界面 actions = ActionChains(driver) # Tab切换到时间范围下拉框,选择"所有时间" actions.send_keys(Keys.TAB * 3) actions.send_keys(Keys.DOWN) # Tab切换到清除数据按钮并点击 actions.send_keys(Keys.TAB * 5) actions.send_keys(Keys.ENTER) actions.perform() time.sleep(3) driver.close() driver.switch_to.window(driver.window_handles[0]) if __name__ == '__main__': driver = start_driver()
注意事项
- 运行脚本前必须完全关闭本地Chrome,否则会提示用户数据目录被占用
- 替换路径中的
<你的用户名>为实际系统用户名 - 若按键序列失效,可手动在Chrome设置界面数Tab键次数调整适配
内容的提问来源于stack exchange,提问作者vamsi shankar
相关产品推荐
相关产品推荐

