在使用Selenium模擬使用者操作時也可以讀取先前的Cookie或Session以獲取先前的網頁狀態,也可達到自動登入等效果。
以下就來講幾個Selenium處理Cookie和Session的方式
Selenium中處理cookie和session的方法如下:
Cookie的處理
可以通過driver的cookie相關方法進行cookie的獲取和添加:
get_cookies() - 獲取所有cookie
get_cookie(name) - 通過名字獲取某個cookie
add_cookie(cookie_dict) - 添加cookie
delete_cookie(name,optionsString) - 刪除cookie
delete_all_cookies() - 刪除所有cookie
示例:
# 獲取所有cookie
cookies = driver.get_cookies()
# 新增cookie
driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
# 刪除foo cookie
driver.delete_cookie('foo')
Session的處理
Selenium會自動處理session,可以通過以下方法獲取session id:
示例:
session_id = driver.session_id
通過以上方法就可以管理cookie和獲取session信息。需要注意的是cookie和session在不同瀏覽器和網站中的處理方式可能有所不同。
而在Selenium中,保存與讀取Cookie和Session數據的常用方式有以下幾種:
1. 保存Cookie到變量或文件
可以通過get_cookies()獲取cookies,保存到一個變量或文件中:
# 保存到變量
cookies = driver.get_cookies()
# 保存到文件
with open('cookies.txt', 'w') as file:
json.dump(cookies, file)
2. add_cookie()添加保存的Cookie
讀取保存的Cookie變量或文件,使用add_cookie()添加到當前cookie:
# 從變量添加
for cookie in cookies:
driver.add_cookie(cookie)
# 從文件添加
with open('cookies.txt') as file:
cookies = json.load(file)
for cookie in cookies:
driver.add_cookie(cookie)
3. 保存和復用session_id
獲取session_id,保存到文件,在另一個driver中使用相同的session_id加載session:
# 保存session_id
session_id = driver.session_id
with open('session.txt', 'w') as file:
file.write(session_id)
# 復用session
session_id = open('session.txt').read()
driver = webdriver.Chrome(session_id=session_id)
以上就是Selenium處理與應用的一些常見方式,透過以上方式自動登入也能夠輕鬆達成。