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

jwensh@2023.12.18

文章目录

  • 背景
    • 当前位置
    • 默认位置
      • windows
      • Mac OS X
      • Linux
      • Chrome操作系统
      • Android
      • iOS系统
  • 覆盖用户数据目录
    • 命令行
    • 环境(Linux)
    • 编写 AppleScript 包装器 (Mac OS X)
  • 用户缓存目录
    • 在 Mac OS X 和 iOS 上,用户缓存目录源自配置文件目录,如下所示:
      • Mac OS X :
    • 在 Linux 上,用户缓存目录源自配置文件目录,如下所示:
      • Linux:

背景

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

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

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

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. 进入:
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/231545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android-----AndroidManifests.xml 之meta-data

一、概念 meta-data:元数据、文件元数据。主要用来定义一些组件相关的配置值。 metadata是一组供父组件使用的名值对(name-value pair),一个组件元素可以包含任意数量的meta-data子元素。这些子元素的值存放在一个 Bundle 对象中…

【具身智能评估9】Open X-Embodiment: Robotic Learning Datasets and RT-X Models

论文标题:Open X-Embodiment: Robotic Learning Datasets and RT-X Models 论文作者:– 论文原文:https://arxiv.org/abs/2310.08864 论文出处:– 论文被引:–(12/18/2023) 论文代码&#xff1a…

【数据库设计和SQL基础语法】--连接与联接--内连接和外连接的概念

一、引言 1.1 SQL连接的基本概念 SQL连接是一种在关系型数据库中使用的操作,用于将两个或多个表中的行关联起来。连接允许在查询中同时检索来自多个表的数据,通过共享一个或多个共同的列(通常是主键或外键)来建立关系。连接操作…

轻量封装WebGPU渲染系统示例<53>- 多盏灯灯光照在地面的效果

WebGPU实时渲染实现模拟多盏灯的灯光照在地面的效果灯光效果 。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MultiLightsTest.ts 当前示例运行效果: 此示例基于此渲染系统实现,当前示例TypeScript源…

2018年第七届数学建模国际赛小美赛B题世界杯足球赛的赛制安排解题全过程文档及程序

2018年第七届数学建模国际赛小美赛 B题 世界杯足球赛的赛制安排 原题再现: 有32支球队参加国际足联世界杯决赛阶段的比赛。但从2026年开始,球队的数量将增加到48支。由于时间有限,一支球队不能打太多比赛。因此,国际足联提议改变…

IDE:DevEco Studio

简介 DevEco Studio是华为为开发者提供的一款集成开发环境(IDE),主要用于开发鸿蒙操作系统(HarmonyOS)的应用程序。作为一款全场景分布式开发工具,DevEco Studio支持多端开发、调试和模拟,为开…

计网02-计算机网络参考模型

一、OSI七层参考模型 1、分层的思想 分层模型用于网络协议的设计方法,本质是将网络节点间复杂的通信问题分成若干简单的问题逐一解决,通过网络的层次去找问题,将复杂问题简单化。 2、OSI参考模型 由于早期计算机厂商使用的是私有的网络模…

View UI(iView) Upload 自定义多图上传列表提交

iView Upload 自定义多图上传列表提交 可以自由控制上传列表,完成各种业务逻辑,示例是一个照片墙,可以查看大图和删除。 设置属性 show-upload-list 为 false,可以不显示默认的上传列表。设置属性 default-file-list 设置默认已…

【PHP入门】2.1-运算符

-运算符- 运算符:operator,是一种将数据进行运算的特殊符号,在PHP中一共有十种运算符之多。 2.1.1赋值运算符 赋值运算:符号是“”,表示将右边的结果(可以是变量、数据、常量和其它运算出来的结果&#…

scroll-behavior属性使用方法

定义和用法&#xff1a; scroll-behavior 属性规定当用户单击可滚动框中的链接时&#xff0c;是否平滑地&#xff08;具动画效果&#xff09;滚动位置&#xff0c;而不是直线跳转。 <style>element{/* 核心代码 */scroll-behavior: smooth;} </style> 属性值&am…

云原生之深入解析减少Docker镜像大小的优化技巧

一、什么是 Docker&#xff1f; Docker 是一种容器引擎&#xff0c;可以在容器内运行一段代码&#xff0c;Docker 镜像是在任何地方运行应用程序而无需担心应用程序依赖性的方式。要构建镜像&#xff0c;docker 使用一个名为 Dockerfile 的文件&#xff0c;Dockerfile 是一个包…

linux修改用户uid和gid并且修改文件所有权(所属用户及所属用户组)(chown命令、chgrp命令)(批量修改查找并修改文件、目录uid和gid)

文章目录 修改Linux用户UID和GID以及文件所有权1. 修改用户的UID和GID1.1 用户UID和GID的概念1.2 修改用户UID1.3 修改用户GID 2. 修改文件所有权2.1 文件所有权的概念2.2 修改文件所有者&#xff08;chown命令&#xff09;2.3 修改文件所属用户组&#xff08;chgrp命令&#x…

Gitlab仓库推送到Gitee仓库的一种思路

文章目录 Gitlab仓库推送到Gitee仓库的一种思路1、创建Gitee的ssh公钥&#xff08;默认已有Gitlab的ssh公钥&#xff09;2、添加Gitlab远程仓库地址3、添加Gitee远程仓库地址4、拉取Gitlab远程仓库指定分支到本地仓库指定分支&#xff08;以test分支为例&#xff09;5、推送本地…

PyTorch机器学习与深度学习

近年来&#xff0c;随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生&#xff0c;人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术&#xff0c;在许多行业都取得了颠覆性的成果。另外&#xff0c;近年来&#xff0c;Pytorch深度学习框架受…

早期的OCR是怎么识别图片上的文字的?

现在的OCR技术融合了人工智能技术&#xff0c;通过深度学习&#xff0c;无论是识别的准确率还是效果都非常不错&#xff0c;那您知道在早期的OCR是通过什么技术来实现的吗&#xff1f;如果您不知道&#xff0c;那么&#xff0c;就让我来告诉您&#xff1a;它主要是基于字符的几…

【工具使用-Qt】Qt如何查看帮助文档

一&#xff0c;简介 Qt不需要单独下载帮助文档&#xff0c;在安装的时候&#xff0c;就已经帮你下载好了&#xff0c;在目录&#xff1a;安装目录/Qt5.14.2/Docs/目录下了。 二&#xff0c;查看方法 打开IDE&#xff0c;点击“帮助”&#xff1a; 输入想要查找的内容&…

2312llvm,01基本介绍

LLVM设计的核心是它的IR. 在把LLVMIR翻译特定汇编语言时,LLVM首先将程序变换为(DAG)有向无环图,以更易选指(SelectionDAG)容易,然后变换回三地址指令,来调度指令(MachineFunction). 为了看清驱动编译程序时,调用的后续工具,用-###命令行参数: $ clang -### hello.c -o hello…

阿里云主导《Serverless 计算安全指南》国际标准正式立项!

日前&#xff0c;在韩国召开的国际电信联盟电信标准分局 ITU-T SG17 全会上&#xff0c;由阿里云主导的《Serverless 计算安全指南》国际标准正式立项成功。 图 1 项目信息 在现今数字化时代&#xff0c;Serverless 计算正逐渐成为云计算的一个新的发展方向&#xff0c;其灵活…

[GO]解决golang.org/x/ 下包下载不下来的问题

因为在项目中要使用到一个golang.org的包&#xff0c;但是因为墙的问题&#xff0c;官方方法已经无法使用&#xff0c;但是在github上存在一个镜像站可以使用&#xff0c;我们只需要将它克隆下来就可以正常使用了 mkdir -p $GOPATH/src/github.com/golang/ git clone https://…

【目标检测】视频输出体积太大?分析视频的编码与码率问题

在做视频目标检测时&#xff0c;发现一个问题&#xff0c;检测输出完的视频时大时小&#xff0c;有时输出体积过大&#xff0c;造成播放器播放时严重卡顿现象。本文就这一情况进行分析&#xff0c;并就该问题提出相关解决方案。 视频基础知识 隔行扫描和逐行扫描 早期电视台在…