《手把手教你》系列技巧篇(六十五)-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工具基础使用教程

相关文章
|
6月前
|
监控 测试技术 API
n8n自动化测试教程 (1):环境搭建与初识n8n
n8n是一款开源、可视化的工作流自动化工具,测试工程师可通过拖拽节点快速构建API测试流程,实现测试编排、数据管理、自动化监控与告警等功能,提升测试效率与覆盖率。
|
11月前
|
人工智能 Java 定位技术
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
本文详细讲解了Java开发者如何基于Spring AI Alibaba框架玩转MCP(Model Context Protocol),涵盖基础概念、快速体验、服务发布与调用等内容。重点包括将Spring应用发布为MCP Server(支持stdio与SSE模式)、开发MCP Client调用服务,以及在Spring AI Alibaba的OpenManus中使用MCP增强工具能力。通过实际示例,如天气查询与百度地图路线规划,展示了MCP在AI应用中的强大作用。最后总结了MCP对AI开发的意义及其在Spring AI中的实现价值。
2468 9
|
Kubernetes Java 持续交付
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
816 9
|
存储 搜索推荐 JavaScript
Java如何获取Cookie里的指定值
【9月更文挑战8天】
445 2
|
Java Devops 持续交付
探索Java中的Lambda表达式:简化代码,提升效率DevOps实践:持续集成与部署的自动化之路
【8月更文挑战第30天】本文深入探讨了Java 8中引入的Lambda表达式如何改变了我们编写和管理代码的方式。通过简化代码结构,提高开发效率,Lambda表达式已成为现代Java开发不可或缺的一部分。文章将通过实际例子展示Lambda表达式的强大功能和优雅用法。
|
运维 Java API
探索Java中的Lambda表达式自动化运维的魔法:如何利用Python脚本提升效率
【8月更文挑战第29天】Lambda表达式是Java 8中引入的一个新特性,它允许我们将功能作为方法参数,或者代码作为数据来处理。在这篇文章中,我们将深入探讨Java中的Lambda表达式,包括它的语法、使用场景以及如何在实际编程中应用它。我们将通过一些简单的示例来演示Lambda表达式的强大功能和灵活性,让你更好地理解和掌握这一新特性。
|
测试技术 开发工具 虚拟化
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
这篇文章提供了一份保姆级的教程,指导如何在MacOS虚拟机上安装Xcode,包括环境准备、基础软件安装以及USB扩展插件的使用,以实现iOS自动化测试方案的第一步。
2014 0
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
|
XML Java 测试技术
Selenium WebDriver自动化测试(基础篇):不得不掌握的Java基础
关于Selenium WebDriver自动化测试的Java基础篇,涵盖了Java的变量、数据类型、字符串操作、运算符、流程控制、面向对象编程、关键字用法、权限修饰符、异常处理和IO流等基础知识点,为进行自动化测试提供了必要的Java语言基础。
376 1
|
数据采集 SQL 前端开发
Java SpringBoot自动化网页爬虫项目
这是一个基于Java Spring Boot的自动化网页爬虫平台,采用图形化界面定义爬虫流程,无需编写代码。该平台高度灵活且可配置,支持Xpath、JsonPath、CSS选择器及正则表达式等多种提取方式,兼容JSON、XML和二进制格式,并支持通过代理服务器访问。它还具备自动管理Cookie、保存数据至数据库或文件、自定义函数和SQL脚本等功能,同时集成了任务监控和日志记录系统。此外,平台支持HTTP接口调用和动态网页抓取,可通过Selenium模拟真实浏览器行为。用户可通过直观的操作界面轻松完成复杂的数据抓取任务。
429 0