Python3.7下Selenium Chrome报user data directory is already in use问题问询
问题排查与解决办法
错误根因分析
- 代码逻辑错误:你在
driver = webdriver.Chrome(options=options)实例化语句之前就调用了driver.set_window_position、driver.set_window_size方法,此时driver对象还未创建,属于无效代码,同时可能导致后续初始化参数异常。 - 用户数据目录占用报错的核心原因是你指定的
user_data_dir路径存在残留锁文件、或被手动打开的Chrome进程占用、或路径配置错误导致和默认Chrome目录冲突。
可行解决方案
- 先修正代码逻辑,删除driver实例化之前的所有driver操作语句,同时删除options中冲突的
window-size=10x10参数,修正后的配置代码如下:
options = webdriver.ChromeOptions() # 如非必须保留用户配置(如登录态、插件),可直接删除以下两行参数,彻底避免目录冲突 options.add_argument(f"--user-data-dir={user_data_dir}") options.add_argument(f'--profile-directory={profile_directory}') options.add_argument('--blink-settings=imagesEnabled=false') options.add_argument('--headless') options.add_argument('--disable-gpu') # 实例化driver driver = webdriver.Chrome(options=options) driver.set_window_position(-10000, 0) driver.set_window_size(1366, 768) driver.implicitly_wait(30)
- 给自动化脚本单独创建独立的用户配置目录,不要和你手动浏览用的Chrome共用配置路径,避免手动打开Chrome时占用目录。如果之前脚本异常退出,先到任务管理器结束所有
chrome.exe、chromedriver.exe进程,再删除你指定的user_data_dir目录下的SingletonLock锁文件后再运行脚本。 - 检查
user_data_dir和profile_directory的路径格式,确保为纯英文、无特殊字符、无空格的绝对路径,避免路径解析错误导致复用默认Chrome目录触发占用报错。
窗口大小修改合理性说明
将driver.set_window_size参数修改为适配你设备的1366*768是完全合理合规的,该方法本身就是为了适配不同设备分辨率设计的,不存在合规性问题,仅需注意不要和其他窗口配置参数冲突即可。
内容的提问来源于stack exchange,提问作者Moh Zak
相关产品推荐
相关产品推荐

