1.简介
今天这一篇,宏哥主要讲解:利用WebDriver 提供可以读取、添加和删除cookie 信息的相关操作方法。验证浏览器中是否存在某个cookie。原因是:因为基于真实的cookie 的测试是无法通过白盒和集成测试完成的。
2.操作cookie 的方法
WebDriver 操作cookie 的方法有:
①getCookies() 获得所有cookie 信息
②addCookie(cookie_dict) 添加cookie,必须有name 和value 值
③deleteAllCookies() 删除所有cookie 信息
④deleteCookieNamed(String name)。删除name 这个cookie
⑤getCookieNamed(String name)。返回特定name 的cookie 值
2.1getCookies()
1.下面通过getCookies()来获取当前浏览器的cookie 信息。
package lessons;
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
*
* 《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)
*
* 2022年1月28日
*/
public class CookieOperation {
public static void main(String[] args) throws InterruptedException{
System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驱动路径
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com");
driver.manage().window().maximize();
//获得cookie
Set<Cookie> coo = driver.manage().getCookies();
//打印cookie
System.out.println(coo);
Thread.sleep(6000);
System.out.println("browser will be close");
driver.quit();
}
}
2.代码执行结果:
2.2addCookie()
1.通过前边的打印结果可以看出,cookie 是以字典的形式进行存放的,知道了cookie 的存放形式,那么我们就可以按照这种形式向浏览器中写入cookie 信息。
package lessons;
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
*
* 《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)
*
* 2022年1月28日
*/
public class CookieOperation {
public static void main(String[] args) throws InterruptedException{
System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驱动路径
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com");
driver.manage().window().maximize();
//添加cookie
Cookie c1 = new Cookie("name-bj", "key-aaaaaaa");
Cookie c2 = new Cookie("value-hg", "value-bbbbbb");
driver.manage().addCookie(c1);
driver.manage().addCookie(c2);
//获得cookie
Set<Cookie> coo = driver.manage().getCookies();
//打印cookie
System.out.println(coo);
Thread.sleep(6000);
System.out.println("browser will be close");
driver.quit();
}
}
2.代码执行结果:
2.3deleteAllCookies()
1.下面通过deleteAllCookies()删除所有cookie信息,执行代码打印cookie应该是空的。
package lessons;
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
*
* 《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)
*
* 2022年1月28日
*/
public class CookieOperation {
public static void main(String[] args) throws InterruptedException{
System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驱动路径
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com");
driver.manage().window().maximize();
//删除所有cookie
driver.manage().deleteAllCookies();
//获得cookie
Set<Cookie> coo = driver.manage().getCookies();
//打印cookie
System.out.println(coo);
Thread.sleep(6000);
System.out.println("browser will be close");
driver.quit();
}
}
2.代码执行结果:
2.4deleteCookieNamed(String name)
1.下面通过deleteCookieNameds()删除指定name的cookie信息,执行代码打印cookie应该是空的看到BIDUPSID的cookie被删除了。
package lessons;
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
*
* 《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)
*
* 2022年1月28日
*/
public class CookieOperation {
public static void main(String[] args) throws InterruptedException{
System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驱动路径
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com");
driver.manage().window().maximize();
//删除所有cookie
driver.manage().deleteCookieNamed("BIDUPSID");
//获得cookie
Set<Cookie> coo = driver.manage().getCookies();
//打印cookie
System.out.println(coo);
Thread.sleep(6000);
System.out.println("browser will be close");
driver.quit();
}
}
2.代码执行结果:
2.5getCookieNamed(String name)
1.下面利用getCookieNamed(String name)返回特定name的cookie值。打印结果是BIDUPSID的值。
package lessons;
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
*
* 《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)
*
* 2022年1月28日
*/
public class CookieOperation {
public static void main(String[] args) throws InterruptedException{
System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驱动路径
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com");
driver.manage().window().maximize();
//返回BIDUPSID的cookie值
Cookie coo = driver.manage().getCookieNamed("BIDUPSID");
//打印cookie
System.out.println(coo);
Thread.sleep(6000);
System.out.println("browser will be close");
driver.quit();
}
}
2.代码执行结果:
3.小结
当开发人员开发一个功能,当用户登录后,会将用户的用户名写入浏览器cookie,指定的key 为“username”,那么我们就可以通过getCookies() 找到useranme,打印vlaue,如果找不到username 或对应的value 为空,那么说明保存浏览器的cookie 是有问题的。
好了,时间不早了,今天就讲解和分享到这里,感谢您耐心地阅读!
每天学习一点,今后必成大神-
往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥 公众号提前解锁更多干货。
Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试
Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南
Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架
Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架
Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程