21、Selenium + Python 实现 UI 自动化测试-操作cookies
什么是cookie,放在前端的一篇文章中解释。这里我们直接学习操作cookie。
一、查看cookies,注意观察cookie都包含什么字段
如何查看浏览器cookies
方法1:使用开发者工具
方法2:
二、看看selenium给我们提供了哪些操作cookies的方法
两种删除,两种获取,一种添加
三、试用一下这5个方法
1、get_cookies(),获取所有当前浏览器地址所有cookies,返回结果是个列表,列表里面是个字典{key:value}
from selenium import webdriver url = 'http://www.baidu.com/' driver = webdriver.Chrome() driver.implicitly_wait(20) driver.get(url) cur_cookies = driver.get_cookies() print(type(cur_cookies)) print(cur_cookies) driver.quit()
运行结果:
C:\Python36\python.exe E:/python/test1/day1/test8.py
<class 'list'>
[{'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '1459_21117_18559_20718'}, {'domain': '.baidu.com', 'expiry': 3655347434.427761, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value':
'036E443A38852CC81EF2C2F552B6034E:FG=1'}, {'domain': '.baidu.com', 'expiry': 3655347434.427906, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '1507863789'}, {'domain': '.baidu.com', 'expiry': 3655347434.427854, 'httpOnly': False,
'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': '036E443A38852CC81EF2C2F552B6034E'}, {'domain': 'www.baidu.com', 'expiry': 1508727788, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '12314753'}, {'domain': 'www.baidu.com',
'expiry': 1507863788.427948, 'httpOnly': False, 'name': 'BD_LAST_QID', 'path': '/', 'secure': False, 'value': '16774091492896634065'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '0'}]
Process finished with exit code 0
2、get_cookie(name)
很好理解了,取对应名字的cookie,比如我们取下名为BAIDUID的cookie。运行结果是个字典,一条cookie
from selenium import webdriver
url = 'http://www.baidu.com/' driver = webdriver.Chrome() driver.implicitly_wait(20) driver.get(url) name_cookie = driver.get_cookie('BAIDUID') print(type(name_cookie)) print(name_cookie) driver.quit()运行结果:
C:\Python36\python.exe E:/python/test1/day1/test8.py
<class 'dict'>
{'domain': '.baidu.com', 'expiry': 3655347538.581271, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': 'A3E231F27E96C4CB8FC18E9BA4B1AFB1:FG=1'}
Process finished with exit code 0
3、delete_all_cookies()
删除所有cookies
from selenium import webdriver url = 'http://www.baidu.com/' driver = webdriver.Chrome() driver.implicitly_wait(20) driver.get(url) driver.delete_all_cookies() print(driver.get_cookies()) driver.quit()运行结果,删除了所有cookies,再打印,结果是个空列表:
C:\Python36\python.exe E:/python/test1/day1/test8.py
[]
Process finished with exit code 0
4、delete_cookie()
from selenium import webdriver import time url = 'http://www.baidu.com/' driver = webdriver.Chrome() driver.implicitly_wait(20) driver.get(url) print(driver.get_cookie('BAIDUID')) time.sleep(2) driver.delete_cookie('BAIDUID') time.sleep(2) print(driver.get_cookie('BAIDUID')) driver.quit()运行结果:
C:\Python36\python.exe E:/python/test1/day1/test8.py
{'domain': '.baidu.com', 'expiry': 3655348015.492028, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': '2A345282FD1AE85C6CC23DDAD49FE89F:FG=1'}
None
Process finished with exit code 0
5、add_cookie({"name":"STORM","value":"123456"})
添加一条cookie。
如果想添加多条的话,需要一条条语句添加。
from selenium import webdriver import time url = 'http://www.baidu.com/' driver = webdriver.Chrome() driver.implicitly_wait(20) driver.get(url) print(driver.get_cookie('STORM')) time.sleep(2) driver.add_cookie({"name":"STORM","value":"123456"}) time.sleep(2) print(driver.get_cookie('STORM')) driver.quit()运行结果:
C:\Python36\python.exe E:/python/test1/day1/test8.py
None
{'domain': 'www.baidu.com', 'expiry': 2138584504, 'httpOnly': False, 'name': 'STORM', 'path': '/', 'secure': False, 'value': '123456'}
Process finished with exit code 0
四、Selenium 什么时候需要操作cookie
参照这篇文章:http://www.cnblogs.com/zhao-ying-jie/p/7084636.html
实测并未成功,哪位如果试验成功,可以告知一下,谢谢。