IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Selenium:实现设置cookie免登录(QQ邮箱为例) -> 正文阅读

[开发测试]Selenium:实现设置cookie免登录(QQ邮箱为例)

使用环境

  • Python:3.9.1
  • Selenium:4.0
  • Chrome:94.0.4606.61
  • Windows 10

操作步骤

  1. 获取账号cookie

    1. 手动打开页面登录后,再通过谷歌插件EditThisCookie来快速获取

    2. EditThisCookie官网:https://www.editthiscookie.com/

    3. EditThisCookie下载:https://download.csdn.net/download/qq_21238607/33237729
      在这里插入图片描述

  2. 通过add_cookie()方法添加cookie代码示例

    import time
    from selenium import webdriver
    
    
    url = 'https://mail.qq.com/'
    
    # 粘贴通过EditThisCookie获取的页面cookie信息
    cookies = "粘贴复制的网站cookie"	# cookie结构:[{},{},{},{},...]
    
    driver = webdriver.Chrome()
    driver.get(url)
    time.sleep(3)
    
    # 通过add_cookie方法添加cookie
    for cookie in cookies:
        driver.add_cookie(cookie)
    
    time.sleep(3)
    driver.refresh()    # 刷新页面验证是否登录成功
    

常见问题

  1. 问题报错:NameError: name ‘false’ is not defined

    问题原因:通过EditThisCookie复制的Cookie内false、true均为小写,使用Python的话,需要修改为:False、True即可

    解决办法:全量替换为:False、True即可

    # 示例:出错cookie
    {
        "domain": ".qq.com",
        "hostOnly": false,
        "httpOnly": false,
        "name": "video_bucketid",
        "path": "/",
        # "sameSite": "unspecified",
        "secure": false,
        "session": true,
        "storeId": "0",
        "value": "4",
        "id": 49
    }
    
    # 修改False、True即可
    {
        "domain": ".qq.com",
        "hostOnly": False,
        "httpOnly": False,
        "name": "video_bucketid",
        "path": "/",
        # "sameSite": "unspecified",
        "secure": False,
        "session": True,
        "storeId": "0",
        "value": "4",
        "id": 49
    }
    
  2. 问题报错:assert cookie_dict[‘sameSite’] in [‘Strict’, ‘Lax’, ‘None’] AssertionError
    问题原因:Cookie 的SameSite属性用来限制第三方 Cookie,从而减少安全风险,它可以这只三个值:‘Strict’, ‘Lax’, ‘None’,早期的Selenium版本也是不支持Cookie添加SameSite属性,如果添加,则会直接抛出异常,言归正传,我们可以通过查看复制的Cookie看出,QQ邮箱得到Cookie内的SameSite值为:unspecified,所以才会导致断言失败。

    解决办法:1. 注释cookie内全部SameSite属性 2. 修改Cookie内全部SameSite属性值为:‘Strict’, ‘Lax’, 'None’即可

    # 示例cookie
    {
        "domain": ".qq.com",
        "hostOnly": False,
        "httpOnly": False,
        "name": "video_bucketid",
        "path": "/",
        "sameSite": "unspecified",	# 注释该行,或修改值为:‘Strict', 'Lax', 'None'
        "secure": False,
        "session": True,
        "storeId": "0",
        "value": "4",
        "id": 49
    }
    
    # add_cookie源码
    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", "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})
    

参考链接

  • Cookie 的 SameSite 属性:https://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 12:11:31  更:2021-10-19 12:12:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:57:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码