在某些场景下是需要处理浏览器cookie的,比如经常能看到有些网站都提供了页面内部的咨询窗口,点开窗口可以和客服对话,然而当第一次跟客服对话的时候,客服方显示对话名称假设为访客A,当半小时后再次打开该网站继续聊天的话客服方依然还会显示是访客A,但如果清理了cookie,在打开网站去和客服对话,客服方显示我们可能就是一个新的访客。
笔者只是举一个互联网产品系统常见的一个场景,而这种场景如果需要自动化测试的话,无疑我们要掌握处理cookie的方法,本节笔者将介绍封装操作cookie的方法,以及如何使用封装好的方法来处理cookie。
方法封装
def delete_current_cookie(self): # 封装删除当前所有cookie的方法
"""
删除所有cookie
:return:
"""
self.driver.delete_all_cookies()
def get_current_cookies(self): # 封装获取当前cookies的方法
"""
获取当前cookies
:return:
"""
current_cookie = self.driver.get_cookies()
return current_cookie
def get_current_cookie_value(self, key): # 获取当前name为key的cookie信息
"""
获取key为key的cookie信息
:param key:
:return:
"""
key_cookie = self.driver.get_cookie(key)
return key_cookie
def add_key_value_to_cookie(self, cookie_dict): # 添加cookie,参数为字典
"""
添加cookie
:return:
"""
self.driver.add_cookie(cookie_dict)
方法调用
然后看如何调用它,在test_advanced_application文件中新增如下测试方法,验证封装的方法是否可用,代码如下所示。
def test_cookies(self): # 定义新的测试方法
cookie_dict = {'name': 'name_yang', 'value': 'cookie_yang'} # 定义字典
chrome_driver = webdriver.Chrome() # 启动浏览器
chrome_driver.get("https://www.baidu.com")
time.sleep(10)
# 获取当前所有cookie
current_cookie = Browser_Controller(chrome_driver).get_current_cookies()
# 打印当前cookie
print(current_cookie)
# 将之前定义的字典添加到cookie中去
Browser_Controller(chrome_driver).add_key_value_to_cookie(cookie_dict)
# 获取name为name_yang的cookie信息
key_cookie = Browser_Controller(chrome_driver).get_current_cookie_value('name_yang')
# 打印cookie信息
print(key_cookie)
# 删除当前cookie
Browser_Controller(chrome_driver).delete_current_cookie()
# 删除后再次获取cookie
current_cookie_2 = Browser_Controller(chrome_driver).get_current_cookies()
# 将当前cookie转换成字符串打印到控制台
print(str(current_cookie_2) + "只有这几个字没有cookie了")