首页 > 其他分享 >12、selenium框架之Cookie操作

12、selenium框架之Cookie操作

时间:2024-04-05 12:22:24浏览次数:21  
标签:cookies 12 name selenium driver value add Cookie cookie

一、查看浏览器cookie

cookie、session、token的区别:

  • cookie存储在浏览器本地客户端,发送的请求携带cookie时可以实现登录操作。
  • session存放在服务器。
  • token应用于应用程序。

F12查看浏览器cookie:

image

二、cookie基本操作

1、获取cookie:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

url = "http://www.baidu.com/"
# 导入浏览器驱动
executable_path = 'chromedriver.exe'
service = Service(executable_path=executable_path)
driver = webdriver.Chrome(service=service)
driver.implicitly_wait(20)
driver.get(url)
cur_cookies = driver.get_cookies()  # 获取所有cookie
baidu_id_cookie = driver.get_cookie('BAIDUID')  # 获取单个cookie
print(len(cur_cookies))
print(cur_cookies)  # 输出cookie值
print(baidu_id_cookie)
driver.close()

运行结果如下:

image

2、获取特定cookie

cookie = driver.get_cookie('cookie_name')

3、删除单个cookie

driver.delete_cookie('cookie_name')

4、删除全部cookie

driver.delete_all_cookies()

5、添加某个cookie

(1)源码解释

 def add_cookie(self, cookie_dict) -> None:
        """Adds a cookie to your current session.

        :Args:
         - cookie_dict: A dictionary object, with required keys - "name" and "value";
            optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"

        :Usage:
            ::

                driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
                driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
                driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
                driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
        """
        if "sameSite" in cookie_dict:
            assert cookie_dict["sameSite"] in ["Strict", "Lax", "None"]
            self.execute(Command.ADD_COOKIE, {"cookie": cookie_dict})
        else:
            self.execute(Command.ADD_COOKIE, {"cookie": cookie_dict})
  • 从中可以看出add_cookie()这个函数有一个参数cookie_dict,它是以字典的形式传入的
    • 字典中必选的键是"name""value"
    • 可选的键是"path", "domin", "secure", "expiry""httponly"

(2)cookie中键名的含义

name        cookie的名称
value       cookie对应的值,动态生成的
domain      服务器域名
expiry      Cookie有效终止日期
path        Path属性定义了Web服务器上哪些路径下的页面可获取服务器设置的Cookie
httpOnly    防脚本攻击
secure      在Cookie中标记该变量,表明浏览器和服务器之间的通信协议为加密认证协议。

(3)添加cookie语法

cookie = {'name': 'cookie_name', 'value': 'cookie_value'}
driver.add_cookie(cookie)

6、完整示例

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

# 添加cookie
cookie = {'name': 'my_cookie', 'value': '12345'}
driver.add_cookie(cookie)

# 获取所有cookies
cookies = driver.get_cookies()
print(cookies)

# 删除特定cookie
driver.delete_cookie('my_cookie')

# 删除所有cookies
driver.delete_all_cookies()

driver.quit()

三、注意事项

添加cookie前,需要首先加载网站,这样Selenium才能知道cookie属于哪个网站

错误示例:

from selenium import webdriver

driver = webdriver.Chrome()
cookies = {"value": "value", "name": "name"}
driver.add_cookie(cookie_dict=cookies)
driver.get("https://www.ketangpai.com/M

正确示例:

from selenium import webdriver

driver = webdriver.Chrome()
cookies = {"value": "value", "name": "name"}
driver.get("https://www.ketangpai.com/User/login.html")
driver.add_cookie(cookie_dict=cookies)
driver.get("https://www.ketangpai.com/Main/index.html")

标签:cookies,12,name,selenium,driver,value,add,Cookie,cookie
From: https://www.cnblogs.com/xiao01/p/18115636

相关文章

  • selenium框架之动作链
    Selenium框架中的动作链(ActionChains)是一种用于执行复杂用户交互操作的方法。通过使用动作链,可以模拟鼠标操作、键盘操作和其他复杂的用户交互行为。这对于处理拖放、鼠标悬停、键盘按键组合等操作非常有用。比如:对于输入框,我们就调用它的输入文字和清空文字方法;对于按钮,就调......
  • C112 莫队算法 P1494 [国家集训队] 小 Z 的袜子
    视频链接:  LuoguP1494[国家集训队]小Z的袜子//普通莫队O(n*sqrt(n))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>usingnamespacestd;constintN=50005;intn,m,B,a[N];intsum,cnt[N],ans1[N],ans2[N];str......
  • 【leetcode面试经典150题】12.O(1) 时间插入、删除和获取随机元素(C++)
    【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C++语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致)【题目描述】实现RandomizedSet 类:......
  • python3.12.2银河麒麟v10鲲鹏离线快速部署
    python3.12.2银河麒麟v10鲲鹏离线快速部署背景清明假期忙活了一整天发现自己方向走错了.部署效率巨慢无比.其实简单情况下很快就可以弄好.自己最开始使用python3.9使用的是libressl发现最新版已经不需要了.并且使用仓库中的就可以.系统版本说明公司的银河麒麟v10......
  • 信息学奥赛一本通题目解析:1204:爬楼梯(记忆化递归)
    【题目描述】树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数。例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共3种方法。【输入】输入包含若干行,每行包含一个正整数N,代表楼梯级数,1≤N≤30。【......
  • 《手把手教你》系列技巧篇(六十九)-java+ selenium自动化测试 - 读取csv文件(详细教程)
    1.简介 在实际测试中,我们不仅需要读取Excle,而且有时候还需要读取CSV类的文件。如何去读取CSV的文件,宏哥今天就讲解和分享一下,希望对你能够有所帮助。前面介绍了如何读取excel文件,本篇介绍如何读取vsc文件,同样需要用到第三方lib去处理读取csv文件的数据。2.什么是CSV?csv是【......
  • 《手把手教你》系列技巧篇(七十)-java+ selenium自动化测试-Java中如何读取properties配
     1.简介Java自动化测试开发中,需要将一些易变的配置参数放置再XML配置文件或者properties配置文件中。然而XML配置文件需要通过DOM或SAX方式解析,而读取properties配置文件就比较容易。因此今天宏哥讲解和分享如何读取properties配置文件的内容。2.properties文件......
  • ctfshow--web12 glob和show_source命令执行
    查看源代码有提示以为是cmd命令解过输入linux命令愣是没反应后来输入phpinfo()才有回显原来是被误导了。一开始想的是直接写入一句话木马点击查看代码@eval($_POST['attack']);echo111;//这里的echo111是方便看我们有没有植入成功的这里有111的回显证明木马注入成......
  • 力扣每日一题:LCR112--矩阵中的最长递增路径
    题目给定一个 mxn 整数矩阵 matrix ,找出其中 最长递增路径 的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。示例1:输入:matrix=[[9,9,4],[6,6,8],[2,1,1]]输出:4解释:最长递增路径为 [1......
  • 团体程序设计天梯赛-练习集 (L1-001 - L1-012)
    天梯赛题解合集团体程序设计天梯赛-练习集(L1-001-L1-012)团体程序设计天梯赛-练习集(L1-013-L1-024)团体程序设计天梯赛-练习集(L1-025-L1-036)团体程序设计天梯赛-练习集(L1-037-L1-048)L1-001HelloWorld输出题样例输入输出HelloWorld!思路按照题......