有时候我们需要验证浏览器中是否存在某个 cookie,因为基于真实的 cookie 的测试是无法通过白盒和集成测试完成的。webdriver 可以读取、添加和删除 cookie 信息。

webdriver 操作 cookie 的方法有:

 get_cookies() 获得所有 cookie 信息

 get_cookie(name) 返回特定 name 有 cookie 信息

 add_cookie(cookie_dict) 添加 cookie,必须有 name 和 value 值

 delete_cookie(name) 删除特定(部分)的 cookie 信息

 delete_all_cookies() 删除所有 cookie 信息

通过 webdriver 操作 cookie 是一件非常有意思的事儿,有时候我们需要了解浏览器中是否存在了某个cookie 信息,webdriver 可以帮助我们读取、添加,删除 cookie 信息。

#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.youdao.com")
# 获得 cookie 信息
cookie= driver.get_cookies()
#将获得 cookie 的信息打印
print cookie
driver.quit()
[{u'domain': u'.youdao.com', u'secure': False, u'value': u'1688263820@61.149.160.138', u'expiry': 2465694697.256476, u'path': u'/', u'httpOnly': False, u'name': u'OUTFOX_SEARCH_USER_ID'}, {u'domain': u'.youdao.com', u'name': u'DICT_UGC', u'value': u'be3af0da19b5c5e6aa4e17bd8d90b28a|', u'path': u'/', u'httpOnly': False, u'secure': False}, {u'domain': u'.youdao.com', u'name': u'JSESSIONID', u'value': u'abc4JOp5mJ2GNc9X-fqhw', u'path': u'/', u'httpOnly': False, u'secure': False}, {u'domain': u'www.youdao.com', u'name': u'___rl__test__cookies', u'value': u'1519614697598', u'path': u'/', u'httpOnly': False, u'secure': False}, {u'domain': u'.youdao.com', u'secure': False, u'value': u'1904223517.2983034', u'expiry': 1582686697, u'path': u'/', u'httpOnly': False, u'name': u'OUTFOX_SEARCH_USER_ID_NCOO'}]




Process finished with exit code 0

上面的方式打印了所有 cookie 信息,太多太乱,我们只想有真对性的打印自己想要的信息,看下面的例子:

#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.youdao.com")
#向 cookie 的 name 和 value 添加会话信息。
driver.add_cookie({'name':'key-aaaaaaa', 'value':'value-bbbb'})
#遍历 cookies 中的 name 和 value 信息打印,当然还有上面添加的信息
for cookie in driver.get_cookies():
print "%s -> %s" % (cookie['name'], cookie['value'])
##### 下面可以通过两种方式删除 cookie #####
# 删除一个特定的 cookie
driver.delete_cookie("CookieName")
# 删除所有 cookie
driver.delete_all_cookies()
time.sleep(2)
driver.close()


#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.youdao.com")
#向 cookie 的 name 和 value 添加会话信息。
driver.add_cookie({'name':'key-aaaaaaa', 'value':'value-bbbb'})
#遍历 cookies 中的 name 和 value 信息打印,当然还有上面添加的信息
for cookie in driver.get_cookies():
print "%s -> %s" % (cookie['name'], cookie['value'])
##### 下面可以通过两种方式删除 cookie #####
# 删除一个特定的 cookie
driver.delete_cookie("CookieName")
# 删除所有 cookie
driver.delete_all_cookies()
time.sleep(2)
driver.close()