有时候我们需要验证浏览器中 cookie 是否正确,因为基于真实 cookie 的测试是无法通过白盒和集成测试进行的。WebDriver 提供了操作 cookie 的相关方法,可以读取、添加和删除 cookie信息。
WebDriver 操作 cookie 的方法:
下面通过 get_cookies() 来获取当前浏览器的 cookie 信息。
from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.youdao.com") # 获得cookie信息 cookie= driver.get_cookies() print(cookie) driver.quit()
从执行结果可以看出,cookie 数据是以字典的形式进行存放的。知道了 cookie 的存放形式,接下来我们就可以按照这种形式向浏览器中写入 cookie 信息。
from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.youdao.com") # 向cookie的name 和value中添加会话信息 driver.add_cookie({'name': 'key-aaaaaaa', 'value': 'value-bbbbbb'}) # 遍历cookies中的name 和value信息并打印,当然还有上面添加的信息 for cookie in driver.get_cookies(): print("%s -> %s" % (cookie['name'], cookie['value'])) driver.quit()
输出结果:
YOUDAO_MOBILE_ACCESS_TYPE -> 1 _PREF_ANONYUSER__MYTH -> aGFzbG9nZ2VkPXRydWU= OUTFOX_SEARCH_USER_ID -> -1046383847@218.17.158.115 JSESSIONID -> abc7qSE_SBGsVgnVLBvcu key-aaaaaaa -> value-bbbbbb
从执行结果可以看到,最后一条 cookie 信息是在脚本执行过程中通过 add_cookie() 方法添加的。通过遍历得到所有的 cookie 信息,从而找到 key 为“name”和“value”的特定 cookie 的 value。
有没有获得cookie时间长的办法,听说有个扫码登录可以,有没有人探讨一下