【WebDriver API】python之selenium操作Cookie

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

WebDriver操作cookie的方法:

  • get_cookies():获得所有cookie信息。
  • get_cookie(name):返回字典的Key为“name”的cookie信息。
  • add_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有name和value值。
  • delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,"optionsString"是该cookie的选项,目前支持的选项包括“路径”,“域”。
  • delete_all_cookies():删除所有cookie信息。

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

from selenium import webdriver
driver=webdriver.Firefox()
driver.get("http://www.youdao.com")

#获得cookie信息
drver=webdriver.Firefox()
drver.get("http://www.youdao.com")

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

输出结果:[{'secure': False, 'value': '1', 'name': 'YOUDAO_MOBILE_ACCESS_TYPE', 'expiry': 1611122896, 'httpOnly': False, 'domain': '.youdao.com', 'path': '/'}, {'secure': False, 'value': 'be3af0da19b5c5e6aa4e17bd8d90b28a|', 'name': 'DICT_UGC', 'httpOnly': False, 'domain': '.youdao.com', 'path': '/'}, {'secure': False, 'value': '[email protected]', 'name': 'OUTFOX_SEARCH_USER_ID', 'expiry': 2525666896, 'httpOnly': False, 'domain': '.youdao.com', 'path': '/'}, {'secure': False, 'value': 'abcQoroleoiu18Tg0Tg-w', 'name': 'JSESSIONID', 'httpOnly': False, 'domain': '.youdao.com', 'path': '/'}, {'secure': False, 'value': '1579586900805', 'name': '___rl__test__cookies', 'httpOnly': False, 'domain': 'www.youdao.com', 'path': '/'}, {'secure': False, 'value': '2047396446.908515', 'name': 'OUTFOX_SEARCH_USER_ID_NCOO', 'expiry': 1642658900, 'httpOnly': False, 'domain': '.youdao.com', 'path': '/'}]

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

from selenium import webdriver

driver=webdriver.Firefox()
driver.get("http://www.youdao.com")

#向cookie的name和value中添加会话信息
driver.add_cookie({'name':'key-aaaaaaaa','value':'value-bbbbbbbb'})
#遍历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”的特定cookie的value。

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

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

发布了30 篇原创文章 · 获赞 7 · 访问量 6781

猜你喜欢

转载自blog.csdn.net/w68688686/article/details/104060957
今日推荐