相关文章链接:
【Web自动化测试】(一)Selenium介绍及安装部署说明
【Web自动化测试】(二)使用selenium编写测试用例
【Web自动化测试】(三)Selenium中控件定位方法
【Web自动化测试】(四)Selenium中WEB控件交互的方法
【Web自动化测试】(五)Selenium中的三种等待方式
【Web自动化测试】(六)Selenium中表单、多窗口、多frame、多浏览器等场景处理方法
【Web自动化测试】(七)Selenium中执行JavaScript脚本
前言:
本文为在霍格沃兹测试开发学社中学习到的一些技术,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步。
1. cookie 是什么
- Cookie 是一些数据, 存储于你电脑上的文本文件中,当登录网页后,web会在本地植入cookie信息
- Cookie信息里面存放的相当于个人信息,当请求web页面的过程中,浏览器发送请求时会携带此信息,这时候web服务端就会通过cookie判断出用户是否有效。
- 通过cookie来保持请求过程,可以实现无感知切换页面,不需要没切换一次页面登录一次。
- 当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。
2. 为什么要使用Cookie自动化登录
- 复用浏览器仍然在每次用例开始都需要人为介入,只要关闭浏览器后就需要在重新人为介入
- 若用例需要经常执行,复用浏览器则不是一个好的选择
- 大部分cookie的时效性都很长,扫一次可以使用多次
3. 使用cookie的思路
4. 常见问题
- 企业微信cookie有互踢机制。在获取cookie成功之后。不要再进行扫码操作!!!!
- 获取cookie的时候,即执行代码
get_cookies()
时,一定要确保已经登录 - 植入cookie之后需要进入登录页面,刷新验证是否自动登录成功。
5. 使用 cookie 登录
5.1 两个常用API
- 获取 cookie:
driver.get_cookies()
- 添加 cookie:
driver.add_cookie(cookie)
5.2 cookie复用示例
import yaml
import time
from selenium import webdriver
class TestCookieLogin:
def setup_class(self):
self.driver=webdriver.Chrome()
def test_cookielogin(self):
#1.访问企业微信主页/登录页面
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
#2.等待20S,人工扫码操作
time.sleep(20)
#3.等成功登录之后,再去获取cookie信息
cookie=self.driver.get_cookies()
#4.将cookie信息存入到可持久存储的地方
with open("cookie.yaml","w") as f:
yaml.safe_dump(cookie,f)
def test_add_cookie(self):
#1.访问企业微信主页/登录页面
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
#2.定义cookie,cookie信息从文件中获取
cookie = yaml.safe_load(open("cookie.yaml"))
#3.注入cookie信息
for c in cookie:
self.driver.add_cookie(c) #https://www.freesion.com/article/5829372758/
#4.再次访问企业微信主页
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")