Python / Selenium-清除Chrome浏览器中的缓存和cookie吗?

Emm*_*kov 5 python selenium webdriver selenium-chromedriver selenium-webdriver

我正在尝试清除Chrome浏览器(Selenium中的Webdriver)中的缓存和cookie,但是找不到针对chrome驱动程序的任何解决方案。如何清除Python中的缓存和cookie?谢谢!

R.F*_*son 13

取自这篇文章

对于cookie,可以使用以下delete_all_cookies功能:

driver.delete_all_cookies()
Run Code Online (Sandbox Code Playgroud)

对于缓存,没有直接的方法可以通过Selenium实现。如果您要确保在启动Chrome驱动程序之初或完成后清除所有内容,则无需执行任何操作。每次初始化Webdriver时,它都是一个全新的实例,没有缓存,Cookie或历史记录。每次您终止驱动程序时,所有这些都将被清除。


do-*_*-me 9

2020 年 11 月使用 Selenium 清除 Chromedriver 的缓存:

使用此功能会打开一个新选项卡,选择删除所有内容,确认并返回到之前的活动选项卡。

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome("path/to/chromedriver.exe")

def delete_cache():
    driver.execute_script("window.open('');")
    time.sleep(2)
    driver.switch_to.window(driver.window_handles[-1])
    time.sleep(2)
    driver.get('chrome://settings/clearBrowserData') # for old chromedriver versions use cleardriverData
    time.sleep(2)
    actions = ActionChains(driver) 
    actions.send_keys(Keys.TAB * 3 + Keys.DOWN * 3) # send right combination
    actions.perform()
    time.sleep(2)
    actions = ActionChains(driver) 
    actions.send_keys(Keys.TAB * 4 + Keys.ENTER) # confirm
    actions.perform()
    time.sleep(5) # wait some time to finish
    driver.close() # close this tab
    driver.switch_to.window(driver.window_handles[0]) # switch back
delete_cache()
Run Code Online (Sandbox Code Playgroud)

更新 01/2021:显然 chromedriver 中的设置部分可能会发生变化。旧版本是chrome://settings/cleardriverData. 如有任何疑问,请转到chrome://settings/,单击浏览器数据/缓存清除部分并复制新术语。


Zac*_*ché 6

2022 有效的方法

我使用了与@do-me 的答案类似的方法,但使它更加实用。另外,他的Tabs 没有映射到适合我的位置,所以我做了一些编辑,使其在 2022 年可以正常工作(至少对我来说是这样)。

import time
from pathlib import Path

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

CHROMEDRIVER = Path('chromedriver.exe')


def start_driver():
    driver = webdriver.Chrome(executable_path=str(CHROMEDRIVER))
    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 * 2 + Keys.DOWN * 4 + Keys.TAB * 5 + Keys.ENTER)  # Tab to the time select and key down to say "All Time" then go to the Confirm button and press Enter
    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()
Run Code Online (Sandbox Code Playgroud)