本節重點:
- 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-8 from selenium import webdriver import time driver = webdriver.Chrome() driver.get("http://www.youdao.com") # 獲得cookie資訊 cookie= driver.get_cookies() #將獲得cookie的資訊列印 print cookie driver.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-8 from selenium import webdriver import time driver = 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 # 刪除一個特定的cookie driver.delete_cookie("CookieName") # 刪除所有cookie driver.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.115
JSESSIONID -> abc7qSE_SBGsVgnVLBvcu
key-aaaaaaa -> value-bbbb # 這一條是我們自己新增的
通過部落格園登陸來分析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'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 中起到了作用。至於是否準確可以再做進一步的分析。