前言
在進行接口測試或者自動化測試時,有時就要登錄好多次,特別麻煩,那能不能不要一遍一遍輸入賬號,直接跳過登錄頁面進行操作。這個時候就要用到cookie,這次主要整理cookie的一些操作,包含獲取cookie、刪除cookie。
題外話,今天去公司辦理辭職手續,遇到一個無賴公司真的讓人頭大又無語。好多小公司都抗不過這次的疫情,看似就業形勢不好,但是是挑戰也是機遇。建議換工作時,條件允許的情況下,在職狀態下尋找下家,最好找一個大公司,可靠正規一點。
一、獲取cookies:get_cookies()
1.獲取cookies直接的方法是:get_cookies()
2.以自己電腦上個的一個OA網站為例,先打開瀏覽器,獲取cookies,打印出來發現是空的:[ ]
3.輸入網址后,獲取cookies,打印出來是有值的
4.輸入賬號和密碼后,登錄系統,獲取cookies,打印出來跟之前獲取的有點不一樣
二、獲取指定name的cookie值:get_cookie(name)
1.get_cookies()獲取到許多的cookie,但是只想獲取其中的一個cookie值,那就用到get_cookie(name)
2.指定對應的cookie的name值就行
三、刪除所有cookies:delete_all_cookies()
1.刪除所有cookies,獲取的cookies為空,刷新頁面后,退出登錄狀態。
四、刪除指定name的cookie:delete_cookie(name)
1.最后一個獲取的cookies列表中就不包含已經刪除的cookie
2.按照原作者的博文講解,理應刷新頁面后登錄失效,變成未登錄狀態,但是嘗試了好幾遍都是在登錄狀態,用排除法進行原因查找,發現只有刪除掉name為“JSESSIONID”的cookie值后,才退出登錄頁面,刪除其他cookie就一直在登錄頁面。但是“JSESSIONID”的cookie在輸入網址后就存在了,又不是登錄后的cookie。(這里自己沒有搞明白)
五、參考代碼
1 from selenium import webdriver 2 from time import sleep 3 driver=webdriver.Chrome() 4 #啟動瀏覽器獲取cookies 5 print(driver.get_cookies()) 6 driver.get('http://127.0.0.1:8080/oa/') 7 #打開主頁后獲取cookies 8 print(driver.get_cookies()) 9 #登錄后獲取cookies 10 loginInputs=driver.find_elements_by_class_name('loginInput') 11 loginInputs[0].send_keys('wangd') 12 loginInputs[1].send_keys('w1234567') 13 driver.find_element_by_id('button_submit').click() 14 sleep(2) 15 print(driver.get_cookies()) 16 17 #獲取指定cookie 18 print(driver.get_cookie(name='Cookie_Lang_OA')) 19 20 # #刪除指定cookie 21 # driver.delete_cookie(name='LoginId_OA') 22 driver.delete_cookie(name='Cookie_Lang_OA') 23 # driver.delete_cookie(name='JSESSIONID') 24 print(driver.get_cookies()) 25 #刷新驗證 26 driver.refresh() 27 28 # #刪除所有cookies 29 # driver.delete_all_cookies() 30 # print(driver.get_cookies()) 31 # driver.refresh() 32 33 sleep(2) 34 driver.quit()