Selenium 保存会话信息避免重复登录实战!

前言

  • • 在一些实际开发场景中,我们在使用 Selenium 做自动化测试时需要保留用户的会话信息,从而避免重复登录,今天这篇文章就带大家实战如何使用 Selenium 保存会话信息。

版本

  • • Python 3.x

整体思路

  • • 当我们打开页面时,检测会话信息文件是否存在,如果存在直接加载会话信息,如果不存在,则进行登录并保存会话信息到本地文件中。

实践

  • • 当我们第一次打开页面时,登录并保存会话信息。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pickle# 第一次登录
driver = webdriver.Chrome()driver.get("https://example.com/login")# 使用自动填充或其它方式登录
username_input = driver.find_element_by_name("username")
password_input = driver.find_element_by_name("password")
username_input.send_keys("your_username")
password_input.send_keys("your_password")
password_input.send_keys(Keys.RETURN)# 登录成功后将driver.get_cookies()返回的cookies保存到名为"cookies.pkl"的文件中
pickle.dump(driver.get_cookies(), open("cookies.pkl", "wb"))# 关闭 driver
driver.close()# 第二次访问
driver = webdriver.Chrome()# 这里需要提前访问一下再加载 cookies 否则会出现 InvalidCookieDomainException: Message: invalid cookie domain
driver.get("https://example.com/login")# 加载 "cookies.pkl" 中的会话信息
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:driver.add_cookie(cookie)# 携带会话信息访问
driver.get("https://example.com/xxx")

问题

invalid cookie domain

  • • 谷歌默认加载使用的是 data domain,所以需要先访问目标页面切换到对应的 domain:

driver.get("https://example.com/login")# 加载 "cookies.pkl" 中的会话信息
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:driver.add_cookie(cookie)
  • • 除此之外,如果你访问的目标页面为一级域名,而保存的 cookies 中存在二级域名的 domain,那么也会出现 invalid cookie domain 的问题,你可以将 cookie 的 domain 二级域名 domain 转换为 一级域名 domain 再进行加载,例如:

cookies domain:
.example.com
.example.com
xxx.example.com
xxx.example.com那么需要全部调整为:
.example.com
.example.com
.example.com
.example.com

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

Android system property运作流程源码分析

一.序 前文分析了build.prop这个系统属性文件的生成,每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性&#x…

【教学类-54-01】20240510超级对对碰(圆点拼图)(9*5、0-255随机)

作品展示 背景需求: 奕娃幼儿园小中大班益智区超级对对碰 - 小红书#幼儿园益智区 #幼儿园益智区素材 #幼儿园区域材料 #幼儿园环创https://www.xiaohongshu.com/discovery/item/6279bb4d000000002103be71?app_platformandroid&ignoreEngagetrue&app_ve…

【Redis】Redis 事务

Redis 的事务的本质是一组命令的批处理。这组命令在执行过程中会被顺序地、一次性 全部执行完毕,只要没有出现语法错误,这组命令在执行期间不会被中断 1.事务特性 仅保证了数据的一致性 这组命令中的某些命令的执行失败不会影响其它命令的执行&#xff…

如何挑选家用洗地机?需要注意什么?这四款洗地机性价比超高

洗地机结合了扫、拖、吸的功能,一台机器,一个推拉的动作便可以清理干净地面上的干湿垃圾,大大的节省了我们做家务的清洁时间,提升了生活质量。但是面对市面上众多的洗地机型号,我们要怎么去挑选呢,需要主要…

Linux下安装mysql8.0(以tar.xz包安装--编译安装)

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! Linux下安装mysql8.0(以tar.xz包安装--编译安装)https://myweb.myskillstree.cn/126.html 目录 一、下载对应自己glic版本的MySQL …

论文解读--High-resolution Automotive Radar Point Cloud Imaging and Processing

高分辨汽车雷达点云成像和处理 摘要 汽车雷达具有体积小、硬件成本低、全天候工作、高分辨率等公认的优点,是高级驾驶辅助系统(ADAS)必不可少的一类重要传感器。然而,低角度分辨率和低成像性能的限制很难满足下一阶段ADAS的需要。新兴的4D成像雷达采用多…

如何打破数据管理僵局,释放数据资产价值?[AMT企源案例]

引言 数据是企业信息运作的核心和基础,是影响企业决策的关键要素,而主数据是数据中的最基础和公共的部分。面临长期以来的数据治理缺失导致的杂论局面,如何有条不紊推进主数据管理,让数据资产“活”起来?S集团的做法非…

Python可以自学但是千万不要乱学,避免“埋头苦学”的陷阱!

前言 Python可以自学但是千万不要乱学! 归根结底因为学习是个反人性的过程! 复盘没学下去的网课,都有以下特点: 😅 臣妾听不懂啊! 初次接触编程遇到太多抽象高深的概念,不了解老师口中的一个…

Android APP读写外置SD卡无权限 java.io.IOException: Permission denied

在物联网应用里,app需要对挂载SD卡读写文件,从 Android 4.4(KitKat)版本开始,Google 引入了一项名为 "Storage Access Framework" 的新功能,该功能限制了应用对外部存储的直接读写权限,要不然就是…

【电容】芯片旁边为什么要接0.1uf(100nF)电容,退耦电容是什么意思,为什么要大电容并小电容

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 ** 一般芯片旁边为什么都会放一个小电容,而且大部分情况下都是100nF ** 1、为什么要放这个电容 首先我们知道这个…

雷森托尔环保科技有限公司见证2024杭州数字供应链装备展潮流

参展企业介绍 青岛雷森托尔环保科技有限公司创建于2018年,位于山东青岛,现注册资本3000万。公司主营生产模压木托盘、化工木托盘、大型设备木包装、出口木托盘、酒柜木酒架等,公司拥有技术人员6人,均为包装设计专业毕业&#xff0…

80.网络游戏逆向分析与漏洞攻防-移动系统分析-利用数据包尝试穿墙

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…