前言
雖然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()
學習過程中有遇到疑問的,可以加selenium(python+java) QQ群交流:646645429
另外成立了python接口自動化QQ群:226296743
selenium+python高級教程》已出書:selenium webdriver基於Python源碼案例
(購買此書送對應PDF版本)