selenium+Python(cookie处理)
cookie 处理
本节重点:
- driver.get_cookies() 获得 cookie 信息
- add_cookie(cookie_dict) 向 cookie 添加会话信息
- delete_cookie(name) 删除特定(部分)的 cookie
- delete_all_cookies() 删除所有 cookie
cookie是webdriver 中已向重要操作,有时候我们需要了解浏览器中,例如:
是否存在了某个 cookie 信息,webdriver 可以帮助我们读取、添加,删除 cookie 信息。
通过博客园登陆来分析 cookie
#coding=utf-8 from selenium import webdriver import time driver = 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 cookie time.sleep(2) driver.close()
运行打印信息:
#第一次执行信息
>>>
[{u'domain': u'.cnblogs.com', u'name': u'.DottextCookie', u'value':
u'C709F15A8BC0B3E8D9AD1F68B371053849F7FEE31F73F1292A150932FF09A7B0D4A1B449A3
2A6B24AD986CDB05B9998471A37F39C3B637E85E481AA986D3F8C187D7708028F9D4ED3B326B
46DC43B416C47B84D706099ED1D78B6A0FC72DCF948DB9D5CBF99D7848FDB78324',
u'expiry': None, u'path': u'/', u'secure': False}]
>>> ========================= RESTART ================================
#第二次执行信息
>>>
[{u'domain': u'.cnblogs.com', u'name': u'.DottextCookie', u'value':
u'5BB735CAD62E99F8CCB9331C32724E2975A0150D199F4243AD19357B3F99A416A93B2E803F
4D5C9D065429713BE8B5DB4ED760EDCBAF492EABE2158B3A6FBBEA2B95C4DA3D2EFEADACC324
7040906F1462731F652199E2A8BEFD8A9B6AAE87CF3059A3CAEB9AB0D8B1B7AD2A',
u'expiry': 1379502502, u'path': u'/', u'secure': False}]
>>>
第一次注释掉勾选保存密码的操作,第二次通过勾选保存密码获得 cookie 信息 ;
来看两次运行结果的 cookie 的何不同:
u'expiry': None
u'expiry': 1379502502
通过对比发现,不勾选保存密码时 expiry 的值为 none ; 那么就可以初步判断勾选
保存密码的操作在 cookie 中起到了作用。至于是否准确可以再做进一步的分析。
添加cookie
1.这里需要添加两个 cookie,一个是.CNBlogsCookie,另外一个
是.Cnblogs.AspNetCore.Cookies。
2.我这里打开的网页是博客的主页:http://www.cnblogs.com/yoyoketang,没
进入登录页。
3.添加 cookie 后刷新页面,接下来就是见证奇迹的时刻了。
# coding:utf-8 from selenium import webdriver import time driver = webdriver.Firefox() driver.get("http://www.cnblogs.com/yoyoketang") # # 添加 cookie c1 = {u'domain': u'.cnblogs.com', u'name': u'.CNBlogsCookie', u'value': u'xxxx', u'expiry': 1491887887, u'path': u'/', u'httpOnly': True, u'secure': False} c2 = {u'domain': u'.cnblogs.com', u'name': u'.Cnblogs.AspNetCore.Cookies', u'value': u'xxxx', u'expiry': 1491887887, u'path': u'/', u'httpOnly': True, u'secure': False} driver.add_cookie(c1) # 添加 2 个值 driver.add_cookie(c2) time.sleep(3) # 交流 QQ 群:232607095 # 刷新下页面就见证奇迹了 driver.refresh()