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或历史记录。每次您终止驱动程序时,所有这些都将被清除。
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/,单击浏览器数据/缓存清除部分并复制新术语。
我使用了与@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)