Chromium升级至110后Selenium加载用户数据目录报错的解决问询
Selenium Chromium升级后用户数据目录问题解决方案
1. 修复用户数据目录导致的报错
- 检查目录权限:运行脚本的用户必须对
self.user_dir路径有完整读写权限,执行以下命令修正:chown -R $USER:$USER /path/to/your/user_dir chmod -R 755 /path/to/your/user_dir - 清理残留锁文件:删除用户数据目录下的
SingletonLock、SingletonSocket文件,这些旧锁文件会阻止新Chromium实例读取目录 - 指定独立配置子目录:在
--user-data-dir参数后追加--profile-directory=SeleniumSession,用单独的配置目录隔离旧版本残留数据,示例代码:chrome_options.add_argument("--user-data-dir=%s" % self.user_dir) chrome_options.add_argument("--profile-directory=SeleniumSession") - 核对版本匹配:确保Chromium和ChromeDriver版本完全一致,执行
chromium --version和chromedriver --version输出的版本号必须完全对应
2. 获取Ubuntu版Chromium 108的deb包进行降级
- 从归档仓库安装:
- 编辑
/etc/apt/sources.list,添加对应Ubuntu版本的归档源(以22.04为例):echo "deb http://archive.ubuntu.com/ubuntu jammy-updates universe" | sudo tee -a /etc/apt/sources.list - 更新仓库并安装指定版本:
sudo apt update sudo apt install chromium-browser=108.0.5359.94-0ubuntu0.22.04.1 - 锁定版本防止自动升级:
sudo apt-mark hold chromium-browser
- 编辑
- 手动下载deb包:
- 查找对应版本的Chromium主包及依赖(如
chromium-codecs-ffmpeg),下载所有.deb文件 - 执行本地安装:
sudo dpkg -i *.deb sudo apt -f install
- 查找对应版本的Chromium主包及依赖(如
3. 无需依赖用户数据目录保持登录状态的方法
- Cookie持久化:
- 首次登录成功后,导出当前Cookie到本地文件:
import json cookies = driver.get_cookies() with open("login_cookies.json", "w") as f: json.dump(cookies, f) - 后续启动时,先打开目标网站,再导入Cookie:
import json driver.get("https://your-target-site.com") with open("login_cookies.json", "r") as f: cookies = json.load(f) for cookie in cookies: driver.add_cookie(cookie) driver.refresh()
- 首次登录成功后,导出当前Cookie到本地文件:
- 自动填充扩展:制作一个简单的浏览器扩展,内置用户名密码自动填充逻辑,通过
chrome_options.add_extension()加载扩展,启动后自动完成登录 - 持久化浏览器会话:启动一个长期运行的Chromium实例,通过RemoteWebDriver远程连接,保持会话不中断,避免每次重启都登录
内容的提问来源于stack exchange,提问作者AKMalkadi
相关产品推荐
相关产品推荐

