• WEB自动化_cookie操作(获取/删除/添加cookie、通过cookie绕过登录测试)


    pprint.pprint(ckList) # 完美打印

    说明:
    1、ui自动化中,登录是必须执行的。
        1、对于没有验证码的系统,直接定位元素自动化操作就可以。
        2、对于有验证码的系统,可以用cookie绕过登录。
    
    2、局限性
        1、cookie 必须有效,这就意味着我们需要先手动登陆一次,获取cookie。
        2、cookie若失效了,则需再次手动获取。
        3、介于这种方式的局限性,一般在遭遇验证码之后,我们还有如下的解决方案:
            1、万能验证码(开发在系统中写死一个验证码)。
            2、让开发在测试环境中取消人机验证(可以做一个开关,正式环境:关闭,测试环境:开启)。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    一、获取/删除/添加cookie

    from selenium import webdriver
    import time
    
    # 创建浏览器驱动对象
    driver = webdriver.Chrome(r"D:\chromedriver\chromedriver_win32-V103.0.5060.53\chromedriver.exe")
    driver.implicitly_wait(3)  # 智能等待_隐性等待
    # 访问网址
    driver.get("http://127.0.0.1:8088/")
    
    # 数入用户名
    driver.find_element_by_name("username").send_keys("ymnl")
    # 输入密码
    driver.find_element_by_name("password").send_keys("123456")
    # 点击登录按钮
    driver.find_element_by_tag_name("button").click()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    1、获取所有cookie信息

    # 1、get_cookies()
    # 2、返回是一个列表,列表中存的是一个个的字典。
    # 3、cookie 的内容是以键值对的形式存在。
    
    • 1
    • 2
    • 3
    ckList = driver.get_cookies()
    print(ckList)
    pprint.pprint(ckList)  # 完美打印
    
    # 返回
    # [{'domain': '127.0.0.1', 'httpOnly': False, 'name': 'Hm_lpvt_750463144f16fe69eb3ac11bea1c4436', 'path': '/', 'secure': False, 'value': '1656071460'},
    #  {'domain': '127.0.0.1', 'expiry': 1687607459, 'httpOnly': False, 'name': 'Hm_lvt_750463144f16fe69eb3ac11bea1c4436', 'path': '/', 'secure': False, 'value': '1656071460'},
    #  {'domain': '127.0.0.1', 'expiry': 1687607459, 'httpOnly': True, 'name': 'beegosessionID', 'path': '/', 'secure': False, 'value': 'c380886acb7d46580a4336568fee3174'}]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、获取单个cookie信息

    # 1、get_cookie()
    # 2、参数为name的值:beegosessionID
    
    • 1
    • 2
    ckOne = driver.get_cookie("beegosessionID")
    print(ckOne)
    
    # 返回
    # {'domain': '127.0.0.1', 'expiry': 1687607687, 'httpOnly': True, 'name': 'beegosessionID', 'path': '/', 'secure': False, 'value': '64652743d4725f166338153efdf70bb7'}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、添加cookie

    # 1、add_cookie()
    # 2、接收的参数是一个字典,必须有name和value值。
    # 3、添加后返回的cookies列表会增加1条cookie。
    
    • 1
    • 2
    • 3
    ckAdd = driver.add_cookie({"name": "zs", "age": "18", "value": "123"})
    # 获取所有cookie信息
    ckList = driver.get_cookies()
    print(ckList)
    
    # 返回
    # [{'domain': '127.0.0.1', 'httpOnly': False, 'name': 'zs', 'path': '/', 'secure': False, 'value': '123'},
    #  {'domain': '127.0.0.1', 'httpOnly': False, 'name': 'Hm_lpvt_750463144f16fe69eb3ac11bea1c4436', 'path': '/', 'secure': False, 'value': '1656071837'},
    #  {'domain': '127.0.0.1', 'expiry': 1687607836, 'httpOnly': False, 'name': 'Hm_lvt_750463144f16fe69eb3ac11bea1c4436', 'path': '/', 'secure': False, 'value': '1656071837'},
    #  {'domain': '127.0.0.1', 'expiry': 1687607836, 'httpOnly': True, 'name': 'beegosessionID', 'path': '/', 'secure': False, 'value': 'ca10da34cdcce2352c79f1b38f7836f7'}]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4、删除所有的cookie

    # 1、delete_all_cookies()
    # 2、返回结果为:[]
    
    • 1
    • 2
    driver.delete_all_cookies()
    # 获取所有cookie信息
    ckList = driver.get_cookies()
    print(ckList)
    
    • 1
    • 2
    • 3
    • 4

    5、删除某个指定的cookie

    # 1、delete_all_cookies()
    # 2、参数为name的值:zs
    # 3、删除后返回的cookies列表会减少1条cookie。
    
    • 1
    • 2
    • 3
    driver.delete_cookie("zs")
    # 获取所有cookie信息
    ckList = driver.get_cookies()
    print(ckList)
    
    • 1
    • 2
    • 3
    • 4

    二、通过cookie绕过登录测试

    1、先获取登录后的cookie信息列表

    # 获取登录后的cookie信息列表
    pprint.pprint(driver.get_cookies())  # 完美打印
    
    cookieSli = [{'domain': '127.0.0.1',
                  'httpOnly': False,
                  'name': 'Hm_lpvt_750463144f16fe69eb3ac11bea1c4436',
                  'path': '/',
                  'secure': False,
                  'value': '1656073218'},
                 {'domain': '127.0.0.1',
                  'expiry': 1687609218,
                  'httpOnly': False,
                  'name': 'Hm_lvt_750463144f16fe69eb3ac11bea1c4436',
                  'path': '/',
                  'secure': False,
                  'value': '1656073218'},
                 {'domain': '127.0.0.1',
                  'expiry': 1687609218,
                  'httpOnly': True,
                  'name': 'beegosessionID',
                  'path': '/',
                  'secure': False,
                  'value': '6e3626745ff7e70d5d19a76bb7b73f42'}]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2、通过cookie绕过登录测试

    cookieSli = [{'domain': '127.0.0.1',
                  'httpOnly': False,
                  'name': 'Hm_lpvt_750463144f16fe69eb3ac11bea1c4436',
                  'path': '/',
                  'secure': False,
                  'value': '1656073218'},
                 {'domain': '127.0.0.1',
                  'expiry': 1687609218,
                  'httpOnly': False,
                  'name': 'Hm_lvt_750463144f16fe69eb3ac11bea1c4436',
                  'path': '/',
                  'secure': False,
                  'value': '1656073218'},
                 {'domain': '127.0.0.1',
                  'expiry': 1687609218,
                  'httpOnly': True,
                  'name': 'beegosessionID',
                  'path': '/',
                  'secure': False,
                  'value': '6e3626745ff7e70d5d19a76bb7b73f42'}]
    
    from selenium import webdriver
    
    # 创建浏览器驱动对象
    driver = webdriver.Chrome(r"D:\chromedriver\chromedriver_win32-V103.0.5060.53\chromedriver.exe")
    driver.implicitly_wait(3)  # 智能等待_隐性等待
    # 访问网址
    driver.get("http://127.0.0.1:8088/")
    
    # 清除所有的cookie,因为原先的cookie是无登录状态的。
    driver.delete_all_cookies()
    
    # 挨个将获取到的有登录状态的cookie添加进去。
    for cookie in cookieSli:
        driver.add_cookie(cookie)
    
    # 最后,要刷新一下
    driver.refresh()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
  • 相关阅读:
    系列四、Nginx的常用命令和配置文件
    AMM 套利者
    工具及方法 - 使用Total Commander来查找重名文件
    QT编程,QT内存管理、信号与槽、
    阿里云服务器上安装redis
    elasticsearch内存占用详细分析
    ABP应用开发(Step by Step)-下篇
    网站服务器怎么部署
    MybatisPlus(4)
    【Java 进阶篇】用JSTL玩转Java:了解JSTL常用标签
  • 原文地址:https://blog.csdn.net/weixin_44801980/article/details/125451773