博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
selenium-webdriver(python) (十三) -- cookie处理
阅读量:6939 次
发布时间:2019-06-27

本文共 3217 字,大约阅读时间需要 10 分钟。

 

本节重点:

  • driver.get_cookies() 获得cookie信息
  • add_cookie(cookie_dict)  向cookie添加会话信息
  • delete_cookie(name)   删除特定(部分)cookie
  • delete_all_cookies()    删除所有cookie

 

通过webdriver 操作cookie 是一件非常有意思的事儿,有时候我们需要了解浏览器中是否存在了某个cookie 信息,webdriver 可以帮助我们读取、添加,删除cookie信息。

 

 

打印cookie信息

 

#coding=utf-8from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get("http://www.youdao.com")# 获得cookie信息cookie= driver.get_cookies()#将获得cookie的信息打印print cookiedriver.quit()

运行打印信息:

[{u'domain': u'.youdao.com', u'secure': False, u'value': u'aGFzbG9nZ2VkPXRydWU=', u'expiry': 1408430390.991375, u'path': u'/', u'name': u'_PREF_ANONYUSER__MYTH'}, {u'domain': u'.youdao.com', u'secure': False, u'value': u'1777851312@218.17.158.115', u'expiry': 2322974390.991376, u'path': u'/', u'name': u'OUTFOX_SEARCH_USER_ID'}, {u'path': u'/', u'domain': u'www.youdao.com', u'name': u'JSESSIONID', u'value': u'abcUX9zdw0minadIhtvcu', u'secure': False}]

 

 

对cookie的操作

 

上面的方式打印了所有cookie信息表,太多太乱,我们只想有真对性的打印自己想要的信息,看下面的例子

#coding=utf-8from selenium import webdriverimport timedriver = webdriver.Firefox()driver.get("http://www.youdao.com")#向cookie的name 和value添加会话信息。driver.add_cookie({
'name':'key-aaaaaaa', 'value':'value-bbbb'})#遍历cookies中的name 和value信息打印,当然还有上面添加的信息for cookie in driver.get_cookies(): print "%s -> %s" % (cookie['name'], cookie['value'])# 下面可以通过两种方式删除cookie# 删除一个特定的cookiedriver.delete_cookie("CookieName")# 删除所有cookiedriver.delete_all_cookies()time.sleep(2)driver.close()

运行打印信息:

YOUDAO_MOBILE_ACCESS_TYPE -> 1_PREF_ANONYUSER__MYTH -> aGFzbG9nZ2VkPXRydWU=OUTFOX_SEARCH_USER_ID -> -1046383847@218.17.158.115JSESSIONID -> abc7qSE_SBGsVgnVLBvcukey-aaaaaaa -> value-bbbb  # 这一条是我们自己添加的

 

 

 

通过博客园登陆来分析cookie

 

#coding=utf-8from selenium import webdriverimport timedriver = webdriver.Firefox()driver.get("http://passport.cnblogs.com/login.aspx?ReturnUrl=http://www.cnblogs.com/fnng/admin/EditPosts.aspx")time.sleep(3)driver.maximize_window() # 浏览器全屏显示#通过用户名密码登陆driver.find_element_by_id("tbUserName").send_keys("fnngj")driver.find_element_by_id("tbPassword").send_keys("123456")#勾选保存密码driver.find_element_by_id("chkRemember").click()time.sleep(3)#点击登陆按钮driver.find_element_by_id("btnLogin").click()#获取cookie信息并打印cookie= driver.get_cookies()print cookietime.sleep(2)driver.close()

运行打印信息:

#第一次执行信息>>> [{u'domain': u'.cnblogs.com', u'name': u'.DottextCookie', u'value': u'C709F15A8BC0B3E8D9AD1F68B371053849F7FEE31F73F1292A150932FF09A7B0D4A1B449A32A6B24AD986CDB05B9998471A37F39C3B637E85E481AA986D3F8C187D7708028F9D4ED3B326B46DC43B416C47B84D706099ED1D78B6A0FC72DCF948DB9D5CBF99D7848FDB78324', u'expiry': None, u'path': u'/', u'secure': False}]>>> ========================= RESTART ================================#第二次执行信息>>> [{u'domain': u'.cnblogs.com', u'name': u'.DottextCookie', u'value': u'5BB735CAD62E99F8CCB9331C32724E2975A0150D199F4243AD19357B3F99A416A93B2E803F4D5C9D065429713BE8B5DB4ED760EDCBAF492EABE2158B3A6FBBEA2B95C4DA3D2EFEADACC3247040906F1462731F652199E2A8BEFD8A9B6AAE87CF3059A3CAEB9AB0D8B1B7AD2A', u'expiry': 1379502502, u'path': u'/', u'secure': False}]>>>

 

第一次注释掉勾选保存密码的操作,第二次通过勾选保存密码获得cookie信息 ;来看两次运行结果的cookie的何不同:

u'expiry': None

u'expiry': 1379502502

通过对比发现,不勾选保存密码时expiry 的值为none ; 那么就可以初步判断勾选保存密码的操作在cookie 中起到了作用。至于是否准确可以再做进一步的分析。

 

 

 

 

 

你可能感兴趣的文章
从头来之【图解针对虚拟机iOS开发环境搭建】 (转)
查看>>
第三届开源操作系统年度技术年会 --- 资料下载
查看>>
揭秘Windows10 UWP中的httpclient接口[2]
查看>>
vuejs 1.x - 实例:搜索过滤
查看>>
新书问答:Agile Management
查看>>
PHP|关于对象复制的一些事
查看>>
设计模式(Design Pattern)系列之.NET专题
查看>>
为 Nginx 添加 HTTP 基本认证(HTTP Basic Authentication)
查看>>
Python2.x的编码问题
查看>>
开源编辑器 Atom 简化代码审查过程
查看>>
如何用纯 CSS 创作一根闪电连接线
查看>>
SpringMVC整合Shiro
查看>>
python 多进程与子进程
查看>>
Git常用命令
查看>>
小程序中文件相关api总结
查看>>
Fluwx:让在Flutter中使用微信SDK成为可能
查看>>
数字化转型 Make it REAL
查看>>
CentOS 7安装过程
查看>>
Fiori里花瓣的动画效果实现原理
查看>>
PHP添加mcrypt扩展模块
查看>>