(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()
网友评论