(二十七)WebDriver API之操作cookie

随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,

这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。

#------------------------------------------------我是可耻的分割线-------------------------------------------

操作cookie

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

  WebDriver操作cookie的方法:

  get_cookies():获得所有cookie信息。

  get_cookie(name):返回字典的key为“name”的cookie信息。

  get_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有namevalue值。

  delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选择,目前支持的选项包括“路径”,“域”。

  delete_all_cookies():删除所有cookie信息。

  下面通过get_cookies()来获取当前浏览器的cookie信息。

#操作cookie
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.youdao.com')

#获得cookie信息
cookie = driver.get_cookies()
#将获得cookie的信息打印
print(cookie)

  结果展示:  

 

  从执行结果可以看出,cookie数据是以字典的形式进行存放的。知道了cookie的存放形式,接下来我们就可以按照这种形式向浏览器中写入cookie信息。

#操作cookie
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.youdao.com')

#向cookie的name和value值中添加会话信息
cookie = driver.add_cookie({"name":"key-aaaaa","value":"value-bbbbbb"})
#遍历cookies中的name和value值信息并打印,当然还有上年添加的信息
for cookie in driver.get_cookies():
    print("%s -> %s" % (cookie['name'],cookie['value']))

driver.quit()

  效果展示:

  从执行结果可以看到,第三天条cookie信息是在脚本执行过程中add_cookie()方法添加的。通过遍历得到所有的cookie信息,从而找到key”name”和”value”的特定cookievalue

  那么在什么情况下回用到cookie的操作呢?例如开发人员开发了一个功能,当用户登录后,会将用户的用户名写入浏览器cookie,指定key为“username”,那么我们就可以通过get_cookie()找到 username,打印value。如果找不到username或对应的value为空,那么说明cookie没有成功地保存到浏览器中。

  delete_cookie()delete_all_cookies()的使用也很简单,前者通过name删除一个特定的cookie信息,后者直接删除浏览器中的所有cookies()信息。

原文地址:https://www.cnblogs.com/lirongyang/p/11459751.html