问题如标题所述使用selenium操作chrome109以上版本会在C:\Program Files (x86)目录下创建scoped_dir*文件夹,每次启动都会创建一个,文件夹内容为浏览器的用户配置,大小在20M左右,多次操作后会导致磁盘占满问题。
经过查询问题是chromedriver导致,官方仍未修复此问题。
可通过以下地址查看问题描述与根因:
https://github.com/SeleniumHQ/selenium/issues/11555
https://bugs.chromium.org/p/chromedriver/issues/detail?id=4322
生肉翻译下来大致解释就是chromium 团队认为当使用高权限运行浏览器时,临时文件仍然会生成在temp目录下,这会被任意的用户修改,他们没办法忍受这一点。所以就把临时文件和文件夹都创建在了只有管理员可以访问的地址,那就是C:\Program Files。
当前并没有什么很好的解决方法,只能是在seleniun代码中显示的指定 user-data-dir参数 或者 使用driver.quit()来正确的关闭驱动。
使用前者将user-data-dir重新指定到temp目录,这样可以保证每次运行完后temp目录会自动删除。后者则是驱动正常退出后也会删除temp目录,即scoped_dir*目录。但是使用driver.quit()方法的话得保证每次chromedriver都是正常退出的,若是异常退出的话临时文件就会一直留着了。
user-data-dir参数示例:
chrome_options = Options()
options.add_argument(r'user-data-dir=C:\Users\Your_User_Name\AppData\Local\Google\Chrome\User Data')
另外这个回答也提到了使用user-data-dir参数仍然会创建一个空文件夹的问题,这里的话笔者尝试使用禁用插件功能后,空文件夹就不会生成了。
chrome_options = Options()
chrome_options.add_argument("--disable-extensions")