iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0

在使用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 - 獲取當前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處理與應用的一些常見方式,透過以上方式自動登入也能夠輕鬆達成。


上一篇
[DAY13]Selenium頁面截圖
下一篇
[DAY15]Discord bot簡介
系列文
selenium爬蟲應用至discord bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言