ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] 前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录。 登录后换账号登录时候,也可作为后置条件去删除cookie然后下个账号登录 <br /> ## **一、获取cookies:get_cookies()** 1. 获取cookies方法直接用:get_cookies() 2. 先启动浏览器,获取cookies,打印出来发现是空:\[\] 3. 打开博客首页后,重新获取cookies,打印出来,就有值了 ![Snipaste_2020-08-20_16-48-49.png](https://i.loli.net/2020/08/20/5MGhAY7TLpZIvKE.png) <br /> ## **二、登录后的cookies** 1. 先登录博客园(这里登录用自己的账号和密码吧) 2. 重新获取cookies,发现跟之前获取的不一样了 3. 主要是找到这一个cookie,发现它的name和value发生了变化,这就是未登录和已登录的区别了(对比上下两张图) ![Snipaste_2020-08-20_16-51-34.png](https://i.loli.net/2020/08/20/7bfVCEoU8yBATw6.png) <br /> ## **三、获取指定name的cookie:driver.get_cookie(name)** 1. 获取cookies发现里面有多个cookie,有时候我们只需要其中的一个,把重要的提出来,比如登录的cookie 2. 这里用get\_cookie(name),指定对应的cookie的name值就行了,比如博客园的:`.Cnblogs.Account.Session` ![Snipaste_2020-08-20_16-57-23.png](https://i.loli.net/2020/08/20/QYxi1M4l5omgknw.png) <br /> ## **四、清除指定cookie:delete_cookie()** 1. 为了进一步验证上一步获取到的就是登录的cookie,可以删除它看看页面什么变化 2. 删除这个cookie后刷新页面,发现刚才的登录已经失效了,变成未登录状态了 ![Snipaste_2020-08-20_16-59-39.png](https://i.loli.net/2020/08/20/YXRoAnpZ6H4NwS1.png) <br /> ## **五、清除所有cookies:delete_all_cookies()** 1. 清除所有cookies后登录状态也失效了 ![Snipaste_2020-08-20_17-01-49.png](https://i.loli.net/2020/08/20/MkEncWL5bmXvI7J.png) <br /> ## **六、cookie操作的几个方法** 1. get_cookies():获取所有cookies 2. driver.get_cookie(name):获取指定name的cookie: 3. 清除指定cookie:delete_cookie() 4. delete_all_cookies():清除所有cookies 5. add_cookie(cookie_dict):添加cookie的值 ![](https://img.kancloud.cn/18/44/1844027930be01f7ba98b2733f13548c_808x276.png) <br /> ## **七、参考代码** ``` # coding:utf-8 from selenium import webdriver import time driver = webdriver.Chrome() driver.get("http://www.baidu.com") # 启动浏览器后获取cookies print(driver.get_cookies()) driver.get("https://www.cnblogs.com/zjut-cheng/") # 打开主页后获取cookies print(driver.get_cookies()) # 登录后获取cookies url = "https://account.cnblogs.com/signin" driver.get(url) driver.implicitly_wait(30) driver.find_element_by_id("mat-input-0").send_keys(u"栀楠") driver.find_element_by_id("mat-input-1").send_keys(u"cheng19940703") driver.find_element_by_css_selector("button.mat-primary").click() time.sleep(3) print(driver.get_cookies()) # 获取指定name的cookies print(driver.get_cookie(name=".Cnblogs.Account.Session")) # 清除指定name的cookie driver.delete_cookie(name=".Cnblogs.Account.Session") print(driver.get_cookies()) # 为了验证此cookies是登录的,可以删除后刷新页面 driver.refresh() # 清除所有的cookies driver.delete_all_cookies() print(driver.get_cookies()) ```