有时候我们需要验证浏览器中是否存在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值
System.setProperty("webdriver.firefox.bin", "D:/Program Files (x86)/Mozilla Firefox/firefox.exe");
System.setProperty("webdriver.gecko.driver", "E://selenium//geckodriver-v0.24.0-win64//geckodriver.exe");
WebDriver driver=new FirefoxDriver();
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
driver.get("http://www.baidu.com/");
//添加cookie
Cookie c1=new Cookie("name1","key111111111111111111111111111111111");
Cookie c2=new Cookie("name2","key2");
driver.manage().addCookie(c1);
driver.manage().addCookie(c2);
//获取cookie
Set<Cookie> coo=driver.manage().getCookies();
//获取特定cookie
System.out.println(driver.manage().getCookieNamed("name1"));
//删除指定cookie
driver.manage().deleteCookie(c2);
//检查是否删除成功
System.out.println(driver.manage().getCookieNamed("name2"));
//删除所有cookie
driver.manage().deleteAllCookies();
System.out.println(driver.manage().getCookies().size());
在测试过程中应用举例:开发人员开发一个功能,当用户登录后,会将用户的用户名写入浏览器cookie,指定的key为“username”,那么就可以通过getCookies()找到username,打印value,如果找不到username或对应的value为空,则说明保存浏览器的cookie是有问题的