autocacheclear.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. """
  4. 监测到 dist/static 文件夹变动后,自动清理chrome缓存
  5. """
  6. import os
  7. import time
  8. from base import init_env
  9. init_env(interactive=True)
  10. from selenium import webdriver
  11. from selenium.webdriver.support.ui import WebDriverWait
  12. from watchdog.observers import Observer
  13. from watchdog.events import LoggingEventHandler
  14. driver = webdriver.Chrome(executable_path=os.environ['CHROME_PATH'])
  15. OBSERVING_PATH = '.'
  16. def get_clear_browsing_button(driver):
  17. """Find the "CLEAR BROWSING BUTTON" on the Chrome settings page."""
  18. return driver.find_element_by_css_selector('* /deep/ #clearBrowsingDataConfirm')
  19. def clear_cache(driver, timeout=60):
  20. """Clear the cookies and cache for the ChromeDriver instance."""
  21. # navigate to the settings page
  22. driver.get('chrome://settings/clearBrowserData')
  23. # wait for the button to appear
  24. wait = WebDriverWait(driver, timeout)
  25. wait.until(get_clear_browsing_button)
  26. # click the button to clear the cache
  27. get_clear_browsing_button(driver).click()
  28. # wait for the button to be gone before returning
  29. wait.until_not(get_clear_browsing_button)
  30. if __name__ == '__main__':
  31. print 'starting cache clearer'
  32. # TODO add handler to clear cache
  33. event_handler = LoggingEventHandler()
  34. observer = Observer()
  35. observer.schedule(event_handler, OBSERVING_PATH, recursive=True)
  36. #observer.add_handler_for_watch()
  37. observer.start()
  38. try:
  39. while True:
  40. time.sleep(1)
  41. except KeyboardInterrupt:
  42. observer.stop()
  43. observer.join()
  44. clear_cache(driver)