一、簡介:
什麼是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()