FireFox用户配置文件

Firefox 将用户个人信息(例如书签、密码、首选项、扩展、Cookie、证书等)保存在一系列文件中,它们被叫做用户配置文件,它们与 Firefox 的程序文件保存在不同位置。
因此,WebDriver如果能够加载已有的FireFox用户配置文件可带来很多便利!

查找用户配置文件

Firefox默认在本地路径C:\Users\<your Windows login username>\AppData\Roaming\Mozilla\Firefox\Profiles\保存配置文件,可通过以下方式获取路径。

  • 在运行框中输入%APPDATA%\Mozilla\Firefox\Profiles\并按下回车键。

  • 在 Firefox 地址栏输入 about:profiles并按下回车键。

  • 在 Firefox 地址栏输入 about:support并按下回车键。

加载FireFox用户配置文件

根据《Selenium3 Python WebDriver API源码探析(18)FireFox WebDriver实现,安装扩展》可知,webdriver在实例化时可设置firefox_profile参数,取值为FirefoxProfile 对象或字符串。如果没有定义,将在操作系统的临时目录中生成一个新的自定义配置文件。

FirefoxProfile 对象为selenium\webdriver\firefox\firefox_profile.pyFirefoxProfile类的实例。
类签名为:class FirefoxProfile(profile_directory=None):
参数profile_directory为用户配置文件路径。

案例:加载FireFox用户配置文件

import selenium.webdriver as webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
# 用户配置文件路径
profile_path = r'C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\1yh6m4pk.default-release'
# 创建FirefoxProfile对象
my_profile = FirefoxProfile(profile_directory=profile_path)
# 设置webdriver启动时加载的用户配置文件
driver = webdriver.Firefox(firefox_profile=my_profile)print(driver.firefox_profile.path)

控制台输出:

C:\Users\Administrator\AppData\Local\Temp\1\tmppd69_1qi\webdriver-py-profilecopy
注意,用户配置文件比较大的慎重使用!! Webdriver启动之后都会把指定的Firefox配置文件路径复制到临时目录中。每次使用的临时目录不同,使用不慎可能导致磁盘空间不足。

FirefoxProfile类源码:

self.tempfolder = tempfile.mkdtemp()
newprof = os.path.join(self.tempfolder, "webdriver-py-profilecopy")

界面对比

正常浏览器的界面,书签添加了腾讯首页,扩展安装了Video DownloadHelper。
不加载用户配置文件,即新用户配置文件的geckodriver界面。
加载用户配置文件,观察可发现webdriver加载了之前添加的书签和扩展。

参考文献

https://support.mozilla.org/zh-CN/kb/%E7%94%A8%E6%88%B7%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6

Selenium3 Python WebDriver API源码探析(19)加载FireFox用户配置文件相关推荐

  1. Selenium3 Python WebDriver API源码探析(10):动作链(ActionChains):鼠标事件和键盘事件

    鼠标.键盘事件是我们利用Selenium操控浏览器的重要交互手段,主要由selenium\webdriver\common\action_chains.py中的ActionChains类实现.该类通过 ...

  2. 基于 GoogleMap 离线 API 源码在内网中加载卫星地图的方法

    1. 概述 我们之前为大家分享过在三维地球开源平台离线加载卫星影像的方法,主要包括基于桌面端的OsgEarth开源三维地球和基于Web端的Cesium开源三维地球等平台的局域网离线加载. 另外,也为大 ...

  3. matplotlib工具栏源码探析四(自定义工具项图标)

    在matplotlib工具栏源码探析二(添加.删除内置工具项)和matplotlib工具栏源码探析三(添加.删除自定义工具项)两篇文章中,仔细观察会发现,不论内置工具项还是自定义工具项都没有图标,但是 ...

  4. SpringCloud源码探析(三)-Nacos集群搭建与配置管理

    1.概述 上一篇文章SpringCloud源码探析(二)-Nacos注册中心分析了nacos单机版的部署以及SpringBoot整合nacos,nacos不仅仅可以作为注册中心,也可以作为配置中心.本 ...

  5. Android 11.0 Settings源码分析 - 主界面加载

    Android 11.0 Settings源码分析 - 主界面加载 本篇主要记录AndroidR Settings源码主界面加载流程,方便后续工作调试其流程. Settings代码路径: packag ...

  6. android资源加载流程6,FrameWork源码解析(6)-AssetManager加载资源过程

    之前一段时间项目比较忙所以一直没有更新,接下来准备把插件化系列的文章写完,今天我们就先跳过ContentProvider源码解析来讲资源加载相关的知识,资源加载可以说是插件化非常重要的一环,我们很有必 ...

  7. Forest源码探析

    Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL.Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通 ...

  8. SpringCloud源码探析(四)-OpenFeign使用及其原理

    1.概述 在SpringCloud中,服务之间的调用方式可以通过ResTemplate进行调用,也可以通过Feign调用.ResTemplate的缺陷在于需要指定请求url,存在硬编码问题,导致代码难 ...

  9. php注册接口怎么写,php源码-扩展是如何加载注册的

    看过PHP源码或者扩展开发相关资料的都知道PHP扩展的几个关键函数,或者叫生命周期 PHP_MINIT PHP_RINIT PHP_RSHUTDOWN PHP_MSHUTDOWN 其中PHP_MINI ...

最新文章

  1. Centos7.5.1804永久生效修改主机名
  2. pythonChallenge:第1关
  3. 开发ASP.NET Atlas服务器端Extender控件——基本概念以及预先需求
  4. 关于uint8_t/uint16_t/uint32_t/uint_fast16_t
  5. jsp论坛网站模版_网站关键词优化怎么做
  6. “约见”面试官系列之常见面试题第三十八篇之js常见的继承方式(建议收藏)
  7. mysql中nchar_浅谈SQL Server、MySQL中char,varchar,nchar,nvarchar区别
  8. get请求可以传body吗_面试必备:GET和POST的区别详细解说
  9. pandas.errors.ParserError: Error tokenizing data. C error: EOF inside string starting at line xxx
  10. GitLab之Runner注册K8S
  11. Java开发入门学习线路图+配套Java基础视频教程分享
  12. 软件测试英语doc,软件测试英语单词.doc
  13. [个人记录]春招C/C++后台/运维面试被问到的那些知识点(第一周)
  14. 央视新闻同款 教你1分钟做出三维地球动画特效
  15. 涂鸦智能通过聆讯:拟回归香港上市 腾讯是重要股东
  16. DeeplabV3+ 训练自己的数据集。pytorch
  17. RSD 教程 —— §2.4  RSD基本操作
  18. TextView 多行文字末尾添加图片
  19. js4eos支持EOS智能合约编译和部署了,再也不用编译EOS了
  20. 为什么序列存在单位根是非平稳时间序列?

热门文章

  1. new bing不用登录,不用申请排队就能用了
  2. php合成大西瓜,火遍全网的《合成大西瓜》到底什么来头?
  3. 快应用消息推送push服务端开发
  4. 斯坦福句法分析 java_斯坦福句法分析使用方法(java版)
  5. 计算机模糊,科普:为什么计算机“会说”记忆模糊推理
  6. 理发师悖论、算法笔记
  7. css设置1.5倍行高,css设定行高、绝对定位
  8. 空间滤波的仿真设计实验
  9. 构建显示全年日历的SQL
  10. 卤水中除硼的工艺,盐湖提锂提取硼酸