cookie處理_1.17

一、簡介:

什麼是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()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章