標籤:通過 fir val 自己的 前言 user firefox 刪除 _id
前言
雖然cookie相關操作在平常ui自動化中用得少,偶爾也會用到,比如登入有圖形驗證碼,可以通過繞過驗證碼方式,添加cookie方法登入。
登入後換帳號登入時候,也可作為後置條件去刪除cookie然後下個帳號登入
一、擷取cookies:get_cookies()
1.擷取cookies方法直接用:get_cookies()
2.先啟動瀏覽器,擷取cookies,列印出來發現是空:[]
3.開啟部落格首頁後,重新擷取cookies,列印出來,就有值了
二、登入後的cookies
1.先登入部落格園(這裡登入用自己的帳號和密碼吧)
2.重新擷取cookies,發現跟之前擷取的不一樣了
3.主要是找到這一個cookie,發現它的name和value發生了變化,這就是未登入和已登入的區別了(對比上下兩張圖)
{u‘name‘: u‘.CNBlogsCookie‘, u‘value‘: u‘B7813EBA142142CE88CC8C0B33B239F566xxxx‘}
三、擷取指定name的cookie:driver.get_cookie(name)
1.擷取cookies發現裡面有多個cookie,有時候我們只需要其中的一個,把重要的提出來,比如登入的cookie
2.這裡用get_cookie(name),指定對應的cookie的name值就行了,比如部落格園的:.CNBlogsCookie
四、清除指定cookie:delete_cookie()
1.為了進一步驗證上一步擷取到的就是登入的cookie,可以刪除它看看頁面什麼變化
2.刪除這個cookie後重新整理頁面,發現剛才的登入已經失效了,變成未登入狀態了
五、清除所有cookies:delete_all_cookies()
1.清除所有cookies後登入狀態也失效了,cookies為空白[]
六、cookie操作的幾個方法
1.get_cookies():擷取所有cookies
2.driver.get_cookie(name):擷取指定name的cookie:
3.清除指定cookie:delete_cookie()
4.delete_all_cookies():清除所有cookies
5.add_cookie(cookie_dict):添加cookie的值
(第五個方法可以用於繞過驗證碼登入,下篇詳細介紹)
七、參考代碼
# coding:utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
# 啟動瀏覽器後擷取cookies
print driver.get_cookies()
driver.get("http://www.cnblogs.com/yoyoketang/")
# 開啟首頁後擷取cookies
print driver.get_cookies()
# 登入後擷取cookies
url = "https://passport.cnblogs.com/user/signin"
driver.get(url)
driver.implicitly_wait(30)
driver.find_element_by_id("input1").send_keys(u"上海-悠悠")
driver.find_element_by_id("input2").send_keys(u"xxx")
driver.find_element_by_id("signin").click()
time.sleep(3)
print driver.get_cookies()
# 擷取指定name的cookie
print driver.get_cookie(name=".CNBlogsCookie")
# 清除指定name的cookie
driver.delete_cookie(name=".CNBlogsCookie")
print driver.get_cookies()
# 為了驗證此cookie是登入的,可以刪除後重新整理頁面
driver.refresh()
# 清除所有的cookie
driver.delete_all_cookies()
print driver.get_cookies()
Selenium2+python自動化40-cookie相關操作