【selenium】自动化使用 chrome 的 user-data-dir

jwensh@2023.12.18

文章目录

背景

用户数据目录包含配置文件数据,例如历史记录、书签和 cookie,以及其他每次安装的本地状态。

每个配置文件都是用户数据目录中的一个子目录(通常为Default)。

我们在使用 selenium 进行 chrome 操作自动化的时候,有时候会用到 extends 插件,也就是

java 复制代码
ChromeOptions options = new ChromeOptions();
options.addArguments(String.format("--user-data-dir=%s", userDataDir));

我们需要了解的内容

当前位置

要确定正在运行的 Chrome 实例的用户数据目录:

  1. 浏览器输入 chrome://version
  2. 查找 Profile Path 字段。这给出了配置文件目录的路径。
  3. 用户数据目录是配置文件目录的父目录。

示例(Windows):

  • 配置文件路径 C:\Users\Alice\AppData\Local\Google\Chrome\User Data\Default
  • 用户数据目录 C:\Users\Alice\AppData\Local\Google\Chrome\User Data

默认位置

用户数据目录的默认位置由 chrome::GetDefaultUserDataDirectory 计算得出。

一般来说,它的变化取决于

  • 操作系统平台,
  • 品牌推广(Chrome 与 Chromium,基于 is_chrome_branded GN 参数),以及
  • 发布渠道(稳定版/测试版/开发版/金丝雀版)。

windows

默认位置位于本地应用程序数据文件夹中:

  • Chrome %LOCALAPPDATA%\Google\Chrome\User Data
  • Chrome Canary %LOCALAPPDATA%\Google\Chrome SxS\User Data
  • Chromium %LOCALAPPDATA%\Chromium\User Data

Mac OS X

默认位置位于 Application Support 文件夹中:

  • Chrome ~/Library/Application Support/Google/Chrome
  • Chrome Canary ~/Library/Application Support/Google/Chrome Canary
  • Chromium ~/Library/Application Support/Chromium

Linux

默认位置位于 ~/.config:

  • Chrome Stable ~/.config/google-chrome
  • Chrome Beta ~/.config/google-chrome-beta
  • Chrome Dev ~/.config/google-chrome-unstable
  • Chromium ~/.config/chromium

(beta 和 dev 通道后缀由 $CHROME_VERSION_EXTRA 确定,由 启动包装器脚本传递.)

默认位置的 ~/.config 部分可以被 $CHROME_CONFIG_HOME(自 M61 起)或 $XDG_CONFIG_HOME 覆盖。

请注意,$XDG_CONFIG_HOME 会影响所有符合 XDG 基本目录规范 的应用程序,而 $CHROME_CONFIG_HOME 特定于 Chrome 和 Chromium。

Chrome操作系统

默认位置是:/home/chronos

Android

默认位置来自 Context.getDir 并且特定于应用。

例子:/data/user/0/com.android.chrome/app_chrome

iOS系统

默认位置位于应用程序沙箱中的应用程序支持目录内。

  • Chrome Library/Application Support/Google/Chrome
  • Chromium Library/Application Support/Chromium

覆盖用户数据目录

命令行

在大多数平台上,可以通过将 --user-data-dir 命令行标志传递给 Chrome 二进制文件来覆盖用户数据目录。

覆盖发生在 chrome/app/chrome_main_delegate.cc 中。未使用该文件构建的平台可能未实现覆盖。 iOS 不支持通过命令行覆盖用户数据目录。

例子:

  • Windows chrome.exe --user-data-dir=c:\foo
  • Linux google-chrome --user-data-dir=/path/to/foo

环境(Linux)

在 Linux 上,还可以使用 $CHROME_USER_DATA_DIR 环境变量覆盖用户数据目录。

如果两者都存在,--user-data-dir 标志优先。

编写 AppleScript 包装器 (Mac OS X)

在 Mac OS X 上,您可以创建一个使用自定义运行 Chrome 的应用程序 --user-data-dir:

  1. 打开应用程序>公用事业>脚本编辑器。
  2. 进入:
shell 复制代码
set chrome to "\"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\""
set userdatadir to "\"$HOME/Library/Application Support/Google/Chrome Alt\""
do shell script chrome & " --user-data-dir=" & userdatadir & " > /dev/null 2>&1 &"
  1. 根据需要修改您的安装路径、Chrome 与 Chromium 以及所需的用户数据目录。
  2. 将脚本保存在应用程序目录中,文件格式为"Application"。
  3. 关闭脚本编辑器,找到新创建的应用程序,然后运行它。这将打开一个指向您的新配置文件的 Chrome 实例。

如果需要,您可以为该应用程序指定与 Chrome 相同的图标:

  1. 选择 Google Chrome 应用程序并选择"文件">"获取信息。
  2. 选择信息对话框左上角的图标。您将在图标周围看到蓝色突出显示。
  3. 按 ⌘C 复制图标。
  4. 打开新应用程序的信息对话框,然后选择左上角的图标。
  5. 按 ⌘V 粘贴复制的图标。

用户缓存目录

在 Windows 和 ChromeOS 上,用户缓存目录与配置文件目录相同。 (配置文件目录位于用户数据目录内。)

在 Mac OS X 和 iOS 上,用户缓存目录源自配置文件目录,如下所示:

  1. 如果 Library/Application Support 是配置文件目录的祖先,则用户缓存目录为 Library/Caches 加上 Application Support 到配置文件目录。
  2. 否则,用户缓存目录与配置文件目录相同。

Mac OS X :

  • 用户数据目录 ~/Library/Application Support/Google/Chrome
  • 个人资料目录 ~/Library/Application Support/Google/Chrome/Default
  • 用户缓存目录 ~/Library/Caches/Google/Chrome/Default

在 Linux 上,用户缓存目录源自配置文件目录,如下所示:

  1. 确定系统配置目录。这是 ~/.config,除非被 XDG_CONFIG_HOME 覆盖。 (此步骤忽略 CHROME_CONFIG_HOME。)
  2. 确定系统缓存目录。这是 ~/.cache,除非被 $XDG_CACHE_HOME 覆盖。
  3. 如果系统配置目录是配置文件目录的祖先,则用户缓存目录是系统缓存目录加上从系统配置目录到配置文件目录的相对路径。
  4. 否则,用户缓存目录与配置文件目录相同。

Linux:

用户数据目录 ~/.config/google-chrome

个人资料目录 ~/.config/google-chrome/Default

用户缓存目录 ~/.cache/google-chrome/Default

在 Android 上,用户缓存目录来自 Context.getCacheDir。

https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md

相关推荐
asaotomo11 分钟前
截图识题、AI 讲解、笔记沉淀:Chrome 扩展体验
前端·chrome·笔记
SEO_juper14 分钟前
Chrome 扩展一键查看当前页面 SEO 信息:不用切页面,点一下全出来
前端·javascript·chrome
ZhuoAIStage13 小时前
舞台工艺多专业审图提速:用 AI 智能体编排 A+B+C+G 四段读图流水线
人工智能·自动化·工作流编排·舞台工艺·审图智能体
海绵宝宝的月光宝盒15 小时前
14-AutoCAD-阵列命令应用与案例实战(AR)
经验分享·笔记·自动化·课程设计·制造·学习方法·cad
螺丝钉tina18 小时前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例
web打印社区20 小时前
Chrome-kiosk-printing能上生产吗
开发语言·前端·javascript·chrome·websocket
实验室管理云平台21 小时前
面向高职院校实训场景:实训实验室管理平台整体方案分享
大数据·科技·物联网·自动化
是jin奥21 小时前
Claude Code + GitHub 自动化工作流整理
运维·自动化·github
PiaoKe___1 天前
云手机技术解析:从 ARM 虚拟化到 Python 自动化实战
python·智能手机·自动化
夜雪一千1 天前
Linux 管道、重定向命令介绍
linux·运维·chrome