Cookie是从网站发送并存储在计算机中的一小段数据。 Cookies主要用于识别用户并加载存储的信息。WebDriver API提供了一系列与Cookie进行交互的内置方法。selenium\webdriver\remote\webdriver.py
中的WebDriver
类实现了相关方法。
Cookie相关API
添加Cookie
Selenium
用于添加Cookie的方法为add_cookie(cookie_dict)
,cookie_dict
参数的格式为一组已定义的可序列化JSON对象(字典),具体取值要求参见https://www.w3.org/TR/webdriver2/#cookies。
add_cookie
方法源码:
def add_cookie(self, cookie_dict):
"""
Adds a cookie to your current session.
:Args:
- cookie_dict: A dictionary object, with required keys - "name" and "value";
optional keys - "path", "domain", "secure", "expiry"
Usage:
driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure':True})
"""
self.execute(Command.ADD_COOKIE, {
'cookie': cookie_dict})
获取全部Cookie
Selenium
用于获取全部Cookie的方法为get_cookies()
。
get_cookies
方法源码:
def get_cookies(self):
"""
Returns a set of dictionaries, corresponding to cookies visible in the current session.
:Usage:
driver.get_cookies()
"""
return self.execute(Command.GET_ALL_COOKIES)['value']
按名称获取Cookie
Selenium
用于按名称获取Cookie的方法为get_cookie(name)
。name
参数Cookie名称。
get_cookie(name)
方法源码:
def get_cookie(self, name):
"""
Get a single cookie by name. Returns the cookie if found, None if not.
:Usage:
driver.get_cookie('my_cookie')
"""
if self.w3c:
try:
return self.execute(Command.GET_COOKIE, {
'name': name})['value']
except NoSuchCookieException:
return None
else:
cookies = self.get_cookies()
for cookie in cookies:
if cookie['name'] == name:
return cookie
return None
删除所有 Cookie
Selenium
用于删除所有 Cookie的方法为delete_all_cookies
。
delete_all_cookies
方法源码:
def delete_all_cookies(self):
"""
Delete all cookies in the scope of the session.
:Usage:
driver.delete_all_cookies()
"""
self.execute(Command.DELETE_ALL_COOKIES)
按名称删除 Cookie
Selenium
用于按名称删除 Cookie的方法为delete_cookie(name)
。name
参数Cookie名称。
delete_cookie(name)
方法源码:
def delete_cookie(self, name):
"""
Deletes a single cookie with the given name.
:Usage:
driver.delete_cookie('my_cookie')
"""
self.execute(Command.DELETE_COOKIE, {
'name': name})
Cookie操作案例
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 添加名为test_key的Cookie
driver.add_cookie({
"name": "test_key", "value": "value1"})
# 获取名为test_key的Cookie
print(driver.get_cookie("test_key"))
# 获取全部Cookie
print(driver.get_cookies())
# 删除名为test_key的Cookie
print(driver.delete_cookie("test_key"))
# 获取全部Cookie
print(driver.get_cookies())
# 删除全部Cookie
print(driver.delete_all_cookies())
# 获取全部Cookie
print(driver.get_cookies())
driver.quit()