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()
本文介绍了Selenium WebDriver如何操作Cookie,包括添加、获取、删除单个或全部Cookie的详细方法,并提供了Python代码示例。通过这些方法,开发者可以在自动化测试中方便地管理浏览器的Cookie状态。
5730

被折叠的 条评论
为什么被折叠?



