• Selenium基础 — Selenium对cookie的操作


    1、cookie介绍

    • HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接,这就意味着服务器无法从连接上跟踪会话。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。举个例子:用户A购买了一件商品放入购物车内,当再次购买商品时,服务器已经无法判断该购买行为是属于用户A的会话,还是用户B的会话了。要跟踪该会话,必须引入一种机制。

      什么是一次会话:

      用户打开浏览器访问某个网站, 在这个网站上浏览任意页面, 访问完成后将浏览器关闭的过程称为是一次会话。

    • cookie的出现就是为了解决这个问题,第一次登录后服务器后,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个cookie,浏览器会把cookie数据保存在本地。该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器检查该cookie存储name,value等信息,以此来辨认用户状态,服务器还可以根据需要修改cookie的内容。

    • cookie就相当于是服务器给客户端们颁发一个通行证,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份,这就是Cookie的工作原理。

    • cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB,因此使用cookie只能存储一些小量的数据。

    • cookie的出现弥补HTTP协议无状态的不足。但是cookie是存储在客户端的,通过浏览器或者抓包工具很容易就能获取到,所以非常不安全。

    2、session介绍

    • session是另一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。存储在服务器的数据会更加的安全,不容易被窃取。客户端浏览器再次访问时,只需要从该session中查找该客户的状态就可以了。
    • 如果说cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
    • session存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,存储一些session信息还是绰绰有余的。

    3、cookie和session工作原理图解

    4、记录cookie的作用

    1. 用户第一次登陆时,勾选下次直接登陆或者记住密码,就是采用记录cookie实现的。
    2. cookie内记录用户名和密码(加密)信息,只要请求时服务器收到cookie,识别成功,默认为已登陆。

    5、Selenium操作cookie 的方法

    webdriver可以读取、添加和删除cookie信息。

    webdriver操作cookie 的方法有:

    操作说明
    get_cookies()获得所有cookie 信息(重点)
    add_cookie(cookie_dict)添加cookie,必须有name 和value 值(重点)
    get_cookie(name值)返回指定name名称的cookie 信息
    delete_cookie(name)删除特定(部分)的cookie 信息
    delete_all_cookies()删除所有cookie 信息

    6、示例:

    1. """
    2. 1.学习目标:
    3. 掌握selenium对cookie操作
    4. 2.语法
    5. 2.1获取所有cookie
    6. driver.get.cookies()
    7. 返同列表格式字典类型 [{},{},{}]
    8. 2.2添加cookie
    9. driver.add_cookie(参数)
    10. 参数:字典格式{"name":"name值","value":"value值"}
    11. 3.需求
    12. 实现selenium对cookie操作
    13. """
    14. # 1.导入selenium
    15. from selenium import webdriver
    16. from time import sleep
    17. # 2.打开浏览器
    18. driver = webdriver.Chrome()
    19. # 3.打开注册A页面
    20. # 不打开一个页面,cookie为[]。
    21. url = "http://www.baidu.com/"
    22. driver.get(url)
    23. # 4.操作cookie
    24. # 4.1 获取cookie
    25. cookies = driver.get_cookies()
    26. for cookie in cookies:
    27. # 值打印cookie中的name和value
    28. print("%s -> %s" % (cookie['name'], cookie['value']))
    29. print("=======================")
    30. # 4.2 获取一个cookie的指定属性值
    31. # 参数是一个cookie中name的属性值
    32. # 没有找到返回None
    33. print(driver.get_cookie("BAIDUID"))
    34. print("=======================")
    35. # 4.3 添加cookie
    36. cookie = {"name": "key-aaaaaaa", "value": "value-aaaaaaa"}
    37. driver.add_cookie(cookie)
    38. # 添加后再次获取
    39. cookies = driver.get_cookies()
    40. for cookie in cookies:
    41. print("%s -> %s" % (cookie['name'], cookie['value']))
    42. print("=======================")
    43. # 4.4 删除指定cookie
    44. # 根据name删除
    45. driver.delete_cookie("key-aaaaaaa")
    46. # 删除后再次获取
    47. cookies = driver.get_cookies()
    48. for cookie in cookies:
    49. print("%s -> %s" % (cookie['name'], cookie['value']))
    50. print("=======================")
    51. # 4.5 删除全部cookie
    52. driver.delete_all_cookies()
    53. print(driver.get_cookies())
    54. # 5.关闭浏览器
    55. sleep(2)
    56. driver.quit()

    7、cookie内容参数说明

    参数描述
    name必需。规定 cookie 的名称。
    value必需。规定 cookie 的值。
    expire可选。规定 cookie 的有效期。
    domain可选。规定 cookie 的域名。
    path可选。规定 cookie 的服务器路径。
    secure可选。规定是否通过安全的 HTTPS 连接来传输 cookie。
    httpOnly可选。防止XSS攻击(跨站脚本攻击)

    说明:

    • path:cookie的有效范围,这个参数domain参数基础上的有效范围,如果path设置为”/”,那就是在整个domain都有效。

    • secure:cookie是否仅通过安全的https,值为0或1。如果值为1,则cookie只能在https连接上有效,默认值为0,表示cookei在http和https连接上都有效。(0或1,也可表示Flase或True)

    • httpOnly:通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击(跨站脚本攻击),这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。

    最后我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了

    1、学习思路和方法

    这个大纲涵盖了目前市面上企业百分之99的技术,这个大纲很详细的写了你该学习什么内容,企业会用到什么内容。总共十个专题足够你学习

    2、想学习却无从下手,该如何学习?

    这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。

    3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件....

    4、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

    最后送上一句话:
    世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
    如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦

  • 相关阅读:
    Oracle创建索引的LOGGING | NOLOGGING区别
    Docker和debezium是什么关系,如何部署?
    Generator异步方案
    leetcode:66. 加一(python3解法)
    计算机毕业设计之java+javaweb篮球系列网上商城设计与实现
    重生奇迹MU套装大全中的极品属性
    什么商业模式是适合你,元宇宙电商NFG了解一下
    湖北省科技进步奖申报16地市政策汇编(2023年申报条件、奖励补贴)
    算法通过村第八关-树(深度优先)白银笔记|深度和高度问题
    如在 Java 中分割 Excel 工作表
  • 原文地址:https://blog.csdn.net/m0_59868866/article/details/127650309