Selenium系列(21) - Cookie操作和源码解读
2024-10-08 22:28:26
如果你还想从头学起Selenium,可以看看这个系列的文章哦!
https://www.cnblogs.com/poloyy/category/1680176.html
其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...)
为什么需要Cookie操作
有时候我们需要验证浏览器中Cookie是否正确,因为基于真实Cookie的测试是无法通过白盒和集成测试进行的
测试某些网站若需要先登录,可以直接通过接口去登录,把返回的Cookie存起来,相当于UI自动化上的免登录了,除开了不必要的登录操作
有哪些Cookie操作
get_cookies(): 获得所有cookie信息
get_cookie(name): 返回字典的key=name的cookie信息
add_cookie(cookie_dict) : 添加cookie
delete_cookie(name):删除cookie信息name是要删除的cookie的名称
delete_all_cookies(): 删除所有cookie信息
直接上代码
# 浏览器
driver = webdriver.Chrome("../resources/chromedriver.exe")
driver.get("https://px.seewo.com/product") # 获得网站的Cookies信息
cookie = driver.get_cookies() # 将获得Cookies的信息打印
print(cookie) # 发起登录请求 # 登录后存放的两个token,需要添加到Cookie中去
cookie_list = {}
cookies["px-token"] = exchangedToken
cookies["x-token"] = token # 添加Cookie
for cookie_ in cookies.items():
driver.add_cookie({'name': cookie_[0], 'value': cookie_[1], 'path': '/', 'httpOnly': True, 'secure': True}) # 再次打印Cookie
print(driver.get_cookies()) # 执行UI自动化操作
# ......
# ...... # 发起退出登录请求 # 删除某个Cookie
driver.delete_cookie("x-token") # 删除所有Cookie
driver.delete_all_cookies() # 浏览器关闭
driver.quit()
可以看看, get_cookies() 返回的数据是什么样的
[{'domain': '.training.test.seewo.com', 'httpOnly': False, 'name': 'Hm_lpvt_b195036baa8d1a75b4e9572ee8593bdd', 'path': '/', 'secure': False, 'value': ''}, {'domain': '.training.test.seewo.com', 'expiry': 1617677195, 'httpOnly': False, 'name': 'Hm_lvt_b195036baa8d1a75b4e9572ee8593bdd', 'path': '/', 'secure': False, 'value': ''}, {'domain': 'training.test.seewo.com', 'expiry': 1586227594.128949, 'httpOnly': True, 'name': 'connect.magick', 'path': '/', 'secure': False, 'value': 's%3AyLzNW4COEHLgiVSDtpv1pcUKzKmsMpoj.5mQxyZpM9kUEdsqXTyCFoht%2F3avDA20S%2Foz5jB52G7U'}]
源码解读
知识点
- get_cookie:从get_cookies()返回的Cookie列表中,循环判断,获取对应的Cookie
- add_cookie:传入dict对象,有两个必传key值:name、vlaue;五个可选key值:path、domain、secure、expiry、httpOnly;可以看到你的字典对象不能乱传key,否则会报错
- delete_cookie:传入的是Cookie的name值
最新文章
- (一)SQL Server分区详解Partition(目录)
- C#动态编译
- C++生成二级制文件过程(预处理->;编译->;链接 )
- 使用Fiddler截断更改Request数据
- 用PHP将Unicode 转化为UTF-8
- ubuntu下安装phpstrom
- MySQL视图了解
- 目标检测----ImageAI使用
- iOS 技术篇: 如何利用dsym文件分析苹果被拒日志
- gerrit配置和使用
- centos 7使用docker安装lnmp和redis环境
- libevent源码分析:evmap_io_active_函数
- 【WEB前端系列之CSS】CSS3动画之Transform
- Constructing Roads----poj2421(最小生成树Kruskal)
- Mac 安装nodejs
- java后台代码发送邮件
- Redis(六)-- SpringMVC整合Redis
- 关于rand 与 randn
- LINQ入门教程之各种标准查询操作符(一)
- mysql关联取附表最后一条记录,附加lareval orm实现
热门文章
- 网页入侵最后一道防线:CSP内容安全策略
- 前端每日实战:111# 视频演示如何用纯 CSS 创作一只艺术的鸭子
- Spring Cloud Feign 优雅的服务调用
- Java——JDBC
- Yuchuan_Linux_C编程之五gdb调试
- 微服务架构-Gradle下载安装配置教程
- jQuery插件select2跨域设置xhrFields参数
- 从 Spring 的环境到 Spring Cloud 的配置
- go源码分析(三) 使用go http包开发web时遇到的坑之卸载插件,重启插件管理,仍然可以访问已经卸载的插件
- 什么是yarn,如何使用yarn安装项目依赖