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

devtools/2024/11/14 12:52:26/

前言

  • • 在一些实际开发场景中,我们在使用 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

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述


http://www.ppmy.cn/devtools/52209.html

相关文章

第十章:MongoDB

MongoDB 文章目录 MongoDB一、简介1.1 MongoDB 是什么1.2 数据库是什么1.3 数据库的作用1.4 数据库管理数据的特点1.5 为什么选择 MongoDB 二、核心概念三、下载安装与启动(1)配置步骤如下:(2)启动服务: 四…

如何利用TikTok矩阵源码实现自动定时发布和高效多账号管理

在如今社交媒体的盛行下,TikTok已成为全球范围内最受欢迎的短视频平台之一。对于那些希望提高效率的内容创作者而言,手动发布和管理多个TikTok账号可能会是一项繁琐且耗时的任务。幸运的是,通过利用TikTok矩阵源码,我们可以实现自…

Java:113-Spring Data JPA详解

Spring Data JPA详解 Spring Data Jpa 是应用于Dao层的⼀个框架,简化数据库开发的,作用和Mybatis框架⼀样,但是在使用方式和底层机制是有所不同的,最明显的⼀个特点,Spring Data Jpa 开发Dao的时候,很多场景…

【车载音视频电脑】两客一危AI车载终端应用系统解决方案

方案简介 两客一危车载终端应用系统针对当今两客一危车辆在行驶过程中存在的道路交通安全问题,运用智能监管系统集成政府监管平台、企业智能监管中心、车载终端、通信网络,通过组成部分之间的互联互通,实现业务管理以及数据交互和共享&#x…

算法安全自评估报告如何填写?(附模板)

之前,众森企服给大家讲过办理互联网信息服务算法备案有三部分组成:主体备案、算法备案和产品备案。 主体备案主要审查的就是一家主体公司是否有算法相应的规章制度,里面最主要的就是算法安全管理制度。 算法备案主要审查的就是算法本身的情…

Stringboot

一、概述 springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起&…

wordpress轻量免费主题

WordPress建站公司 适合提供WordPress建站服务的公司或个体(个人)工作室使用的WordPress建站公司主题模板。 https://www.jianzhanpress.com/?p545 首屏大图红色简洁wordpress主题 首屏大图红色简洁wordpress主题,非常地高端大气上档次,可用于多个行…

第2章 Rust初体验5/8:match表达式和模式匹配:更富表达力:猜骰子冷热游戏

讲动人的故事,写懂人的代码 2.5 故事3: 比较答案与点数之和 贾克强:“同学们,我们开始用三种语言来实现故事3吧!” 2.5.1 Rust版故事3 这个故事实在是轻松容易地实现了。赵可菲照着书,一下子就写好了。 @@ -1,4 +1,5 @@use rand::Rng; +use std::cmp::Ordering;use std…