《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)

简介: 【6月更文挑战第6天】本文介绍了如何使用WebDriver进行浏览器cookie的操作。

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 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 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 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 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年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

相关文章
|
8月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
765 0
|
9月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
291 0
|
9月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
449 31
Selenium IDE:Web自动化测试的得力助手
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
1129 17
Selenium:强大的 Web 自动化测试工具
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
290 0
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
2318 2
|
XML JSON 前端开发
阿里云JAVA高级测试试题及答案(十二)
阿里云JAVA高级测试试题及答案
362 0
阿里云JAVA高级测试试题及答案(十一)
阿里云JAVA高级测试试题及答案
308 0
下一篇
开通oss服务