Python + Selenium 小技巧之操作Cookies

Python + Selenium 小技巧之操作Cookies

有时我们需要验证浏览器中的Cookie是否正确,因为基于真实的Cookie是无法通过白盒测试或集成测试的。WebDriver为我们提供了操作Cookie的相关方法,可以读取、添加和删除Cookie。

WebDriver操作Cookie的方法如下:

  • get_cookies() 获得所有Cookie
  • get_cookie(name) 返回字典中key为“name”的Cookie
  • add_cookie(cookie_dict) 添加Cookie
  • delete_cookie(name, optionsString) 删除名为optionsString的Cookie
  • delete_all_cookies() 删除所有的Cookie

接下来,我们通过get_cookies()获取当前浏览器百度页面的所有Cookie

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")

# 获取所有的Cookie信息,并打印
cookie = browser.get_cookies()
print(cookie)

得到的结果如下:

[{'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '1448_21110_30211_18560_30124_26350'}, {'domain': '.baidu.com', 'expiry': 1607653995.91547, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': '3769E6BCDF30C9F3301992018E6CF8F0:FG=1'}, {'domain': '.baidu.com', 'expiry': 3723601642.915432, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': '3769E6BCDF30C9F32CE3C13DA19D3420'}, {'domain': '.baidu.com', 'httpOnly': False, 'name': 'delPer', 'path': '/', 'secure': False, 'value': '0'}, {'domain': '.baidu.com', 'expiry': 3723601642.91546, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '1576117996'}, {'domain': '.baidu.com', 'expiry': 1576204396.24507, 'httpOnly': False, 'name': 'BDORZ', 'path': '/', 'secure': False, 'value': 'B490B5EBF6F3CD402E515D22BCDA1598'}, {'domain': 'www.baidu.com', 'expiry': 1576981996, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '12314753'}, {'domain': 'www.baidu.com', 'httpOnly': False, 
'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '0'}]

不难看出,这些Cookie中的数据都是以字典形式存放的。在了解Cookie中数据的存放形式后,即可按照这种形式向浏览器中添加Cookie。

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")

# 添加Cookie信息
browser.add_cookie({'name': 'key-aaaaaaa', 'value': 'value-bbbbbbb'})

# 遍历指定的Cookies
for cookie in browser.get_cookies():
    print(f'{cookie["name"]} -> {cookie["value"]}')

运行脚本,执行结果如下:

key-aaaaaaa -> value-bbbbbbb
H_PS_PSSID -> 1434_21111_30210
BAIDUID -> 916438478DB2357AD10E38EC17689E33:FG=1
BIDUPSID -> 916438478DB2357AD8389F72D5814F65
delPer -> 0
PSTM -> 1576118446
BDORZ -> B490B5EBF6F3CD402E515D22BCDA1598
BD_UPN -> 12314753
BD_HOME -> 0

从执行结果来看,这里第一条Cookie正是我们通过add_cookie(cookie_dict)方法添加的。通过遍历得到所有的Cookie,从而找到字典中key为“name”“vlaue”的Cookie值。

当然了,能添加,就能删除,用到的方法是delete_cookie(name, )delete_all_cookies()。前者通过指定name来删除一个特定的Cookie,后者则是直接删掉所有的Cookie。


文章作者: &娴敲棋子&
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 &娴敲棋子& !
评论
  目录