一、简介:
什么是cookie
cookie是存储在用户本地终端上的数据,实际上是一小段的文本信息
cookie作用
帮助web站点保存有关访问者的信息,方便用户的访问。如记住用户名密码实现自动登录
可以把cookie理解为自己账号的身份证。因为http协议是无状态的,上一个请求和下一个请求没有关系。但是有时需要关联。比如登录之后,才能进行操作这样的设置。登录成功时,服务器会给浏览器一个cookie,浏览器会解析存在本地。然后同一个网站,下一次请求时就会把这个cookie带上,告诉服务器是哪个用户在操作。在关闭浏览器时cookie有效期结束。
二、webdriver 提供了一些用来操作cookie的方法:
get_cookies():
获得cookie所有信息,返回的时一个字典
get_cookie(name='key'):
获取指定name的cookie,返回字典的key值
add_cookie(cookie_dict):
手动添加cookie,需要传一个字典进去,用cookie_dict来接收,字典的键必须有'name'和'value'
delete_cookie(name):
删除cookie信息,name是要删除的cookie的名称
delete_all_cookies():
删除所有cookie信息
举例:
1、获取cookies:get_cookies()
(1)获取cookies方法直接用:
(2)启动火狐浏览器,获取cookies,打印出来发现是空:[ ]
(3)打开百度首页后,重新获取cookies,打印出来就有值
from selenium import webdriver
driver=webdriver.Firefox()
coo=driver.get_cookies()
print(coo)
driver.get("https://www.baidu.com")
co1=driver.get_cookies()
print(co1)
print(co1[0]) #打印第一组元素
driver.quit()
2、登录后的cookies
(1)先登录百度,输入自己的用户名和密码
(2)重新获取cookies,与之前的对比,不一样了
(3)主要是找到这一个cookie,发现它的name和value发生了变化,这就是未登录和已登录的区别
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
print(driver.get_cookies())
time.sleep(3)
driver.find_element_by_link_text("登录").click()
time.sleep(5)
#选择用户名登录
driver.find_element_by_css_selector("#TANGRAM__PSP_10__footerULoginBtn").click()
driver.find_element_by_id("TANGRAM__PSP_10__userName").send_keys('1**********')
driver.find_element_by_id("TANGRAM__PSP_10__password").send_keys("x********")
driver.find_element_by_id("TANGRAM__PSP_10__submit").click()
print(driver.get_cookies())
3、获取指定name的cookie:driver.get_cookie(name)
(1)获取cookies发现里面有多个cookie,有时候我们只需要其中一个,把重要的提出来,比如登录cookie
(2)这里用get_cookie(name),指定对应的cookie的name值就行了
print(driver.get_cookie(name='BDUSS'))
4、清除指定
(1)为了进一步验证上一步获取到的就是登录的cookie,可以删除它看看页面什么变化
(2)删除这个cookie后刷新页面,发现刚才登录已经失效,变成未登录的状态了
driver.delete_cookie(name='******')
print(driver.get_cookies())
driver.refresh()
5、清除所有的cookies:delete_all_cookies()
(1)清除所有的cookies后登录状态也失效了,cookies为空 [ ]
driver.delete_all_cookies()
print(driver.get_cookies()