美文网首页
python3+selenium自动化测试-操作cookie11

python3+selenium自动化测试-操作cookie11

作者: C1R2 | 来源:发表于2020-09-02 22:11 被阅读0次

    (11)操作cookie
    WebDriver操作cookie的方法:
    1、get_cookiess():获得所有 cookie 信息。
    2、get_cookie(name):返回字典的 key 为“name” 的 cookie 信息。
    3、add_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有name和value值。
    4、delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”。
    5、delete_all_cookies():删除所有 cookie 信息。
    代码参考一:

    # coding:utf-8
    from selenium import webdriver
    from time import *
    driver = webdriver.Chrome()
    driver.get("http://www.youdao.com")
    cookie = driver.get_cookies()
    print(cookie)
    driver.add_cookie({'name':'key-aaa','value':'value-bbb'})
    cookie = driver.get_cookies()
    print(cookie)
    for cookie in driver.get_cookies():
        print("%s -> %s" % (cookie['name'], cookie['value']))
    sleep(5)
    driver.quit()
    

    虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,
    比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录。
    登录后换账号登录时候,也可作为后置条件去删除cookie然后下个账号登录。本次用博客园为例

    一、获取cookies:get_cookies()
    1.获取cookies方法直接用:get_cookies()
    2.先启动浏览器,获取cookies,打印出来发现是空:[]
    3.打开博客首页后,重新获取cookies,打印出来,就有值了


    图片.png

    二、登录后的cookies
    1.先登录博客园(这里登录用自己的账号和密码吧)
    2.重新获取cookies,发现跟之前获取的不一样了
    3.主要是找到这一个cookie,发现它的name和value发生了变化,这就是未登录和已登录的区别了(对比上下两张图)
    {u'name': u'.CNBlogsCookie', u'value': u'B7813EBA142142CE88CC8C0B33B239F566xxxx'}

    三、获取指定name的cookie:driver.get_cookie(name)
    1.获取cookies发现里面有多个cookie,有时候我们只需要其中的一个,把重要的提出来,比如登录的cookie
    2.这里用get_cookie(name),指定对应的cookie的name值就行了,比如博客园的:.CNBlogsCookie

    四、清除指定cookie:delete_cookie()
    1.为了进一步验证上一步获取到的就是登录的cookie,可以删除它看看页面什么变化
    2.删除这个cookie后刷新页面,发现刚才的登录已经失效了,变成未登录状态了

    五、清除所有cookies:delete_all_cookies()
    1.清除所有cookies后登录状态也失效了,cookies为空[]

    代码参考二,如下:

    # coding:utf-8
    # selenium 绕过登录的例子
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    driver.maximize_window()
    # 启动服务器获取cookies
    print(driver.get_cookies())
    driver.get("https://www.cnblogs.com/")
    # 打开博客园获取cookies
    print(driver.get_cookies())
    # 添加cookie
    
    c1 = {u'domain': u'.cnblogs.com',
          u'name': u'.CNBlogsCookie',
          u'value': u'cr1xxx1',
          u'expiry': 1622560121,
          u'path': u'/',
          u'httpOnly': True,
          u'secure': False}
    
    c2 = {u'domain': u'.cnblogs.com',
          u'name': u'.Cnblogs.AspNetCore.Cookies',
          u'value': u'cr2xxx2',
          u'expiry': 1622560121,
          u'path': u'/',
          u'httpOnly': True,
          u'secure': False}
    
    # 添加2个值
    driver.add_cookie(c1)
    driver.add_cookie(c2)
    
    time.sleep(3)
    print(driver.get_cookies())
    # 刷新下页面就见证奇迹了
    
    driver.refresh()
    
    # 再来个登录后操作
    driver.find_element_by_link_text(u"博客园").click()
    time.sleep(5)
    driver.get("https://www.cnblogs.com/hc1hr2/")
    
    driver.delete_all_cookies()
    print(driver.get_cookies())
    # driver.find_element_by_link_text("Refain").click()
    

    参考链接
    https://www.cnblogs.com/yoyoketang/p/6535391.html

    相关文章

      网友评论

          本文标题:python3+selenium自动化测试-操作cookie11

          本文链接:https://www.haomeiwen.com/subject/tmplsktx.html