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

实测并未成功,哪位如果试验成功,可以告知一下,谢谢。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值