有时候我们需要验证浏览器中是否存在某个cookie,因为基于真实的cookie 的测试是无法通过白盒和

集成测试完成的。WebDriver 提供了操作Cookie 的相关方法可以读取、添加和删除cookie 信息。

WebDriver 操作cookie 的方法有:

 getCookies() 获得所有cookie 信息

 addCookie(cookie_dict) 添加cookie,必须有name 和value 值

 deleteAllCookies() 删除所有cookie 信息

 deleteCookieNamed(String name)。删除name 这个cookie

 getCookieNamed(String name)。返回特定name 的cookie 值

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



package com.mypro.jase;
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class cookie {
public static void main(String[] args){
WebDriver driver = new ChromeDriver();
driver.get("http://www.youdao.com");
//获得cookie
Set<Cookie> coo = driver.manage().getCookies();
//打印cookie
System.out.println(coo);
driver.quit();
}
}


执行结果:

>>> ================================ RESTART ================================
>>>
[JSESSIONID=abc6Pheyjzl7M_fdLPy3u;
path=/;
domain=www.youdao.com,
OUTFOX_SEARCH_USER_ID=-1975491366@183.61.23.26;
expires=星期四, 01 六月2045 10:08:10 CST;
path=/;
domain=.youdao.com]

通过打印结果可以看出,cookie 是以字典的形式进行存放的,知道了cookie 的存放形式,那么我们就

可以按照这种形式向浏览器中写入cookie 信息。



import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class cookie {
public static void main(String[] args){
WebDriver driver = new ChromeDriver();
driver.get("http://www.youdao.com");
Cookie c1 = new Cookie("name", "key-aaaaaaa");
Cookie c2 = new Cookie("value", "value-bbbbbb");
driver.manage().addCookie(c1);
driver.manage().addCookie(c2);
//删除所有cookie
driver.manage().deleteAllCookies();
//获得cookie
Set<Cookie> coo = driver.manage().getCookies();
//打印cookie
System.out.println(coo);
driver.quit();
}
}


执行结果:

>>> ================================ RESTART ================================

>>>

[name=key-aaaaaaa;

path=/;

domain=www.youdao.com,

value=value-bbbbbb;

path=/;

domain=www.youdao.com]

 

从打印结果可以看到最后一条cookie 信息是在脚本执行过程中通过addCookie()方法添加的。通过遍

历得到的所cookie 信息从而找到key 为“name”和“value”的特定cookie 的value。

那么在什么情况下会用到cookie 的操作呢?例如开发人员开发一个功能,当用户登录后,会将用户的

用户名写入浏览器cookie,指定的key 为“username”,那么我们就可以通过getCookies() 找到useranme,

打印vlaue,如果找不到username 或对应的value 为空,那么说明保存浏览器的cookie 是有问题的。

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