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

相关文章
|
1天前
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
12 5
|
2天前
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
【7月更文挑战第12天】在本文中,作者宏哥介绍了如何在不使用PageFactory的情况下,用Java和Selenium实现Page Object Model (POM)。文章通过一个百度首页登录的实战例子来说明。首先,创建了一个名为`BaiduHomePage1`的页面对象类,其中包含了页面元素的定位和相关操作方法。接着,创建了测试类`TestWithPOM1`,在测试类中初始化WebDriver,设置驱动路径,最大化窗口,并调用页面对象类的方法进行登录操作。这样,测试脚本保持简洁,遵循了POM模式的高可读性和可维护性原则。
11 2
|
3天前
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
【7月更文挑战第11天】页面对象模型(POM)通过Page Factory在Java Selenium测试中被应用,简化了代码维护。在POM中,每个网页对应一个Page Class,其中包含页面元素和相关操作。对比之下,非POM实现直接在测试脚本中处理元素定位和交互,代码可读性和可维护性较低。
|
24天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
【6月更文挑战第21天】本文介绍了TestNG中测试方法的依赖执行顺序。作者通过一个实际的自动化测试场景展示了如何设计测试用例:依次打开百度、搜索“selenium”、再搜索“selenium+java”。代码示例中,`@Test`注解的`dependsOnMethods`属性用于指定方法间的依赖,确保执行顺序。如果不设置依赖,TestNG会按方法名首字母排序执行。通过运行代码,验证了依赖关系的正确性。
41 4
|
4天前
|
设计模式 测试技术 Python
《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
【7月更文挑战第10天】Page Object Model (POM)是Selenium自动化测试中的设计模式,用于提高代码的可读性和维护性。POM将每个页面表示为一个类,封装元素定位和交互操作,使得测试脚本与页面元素分离。当页面元素改变时,只需更新对应页面类,减少了脚本的重复工作和维护复杂度,有利于团队协作。POM通过创建页面对象,管理页面元素集合,将业务逻辑与元素定位解耦合,增强了代码的复用性。示例展示了不使用POM时,脚本直接混杂了元素定位和业务逻辑,而POM则能解决这一问题。
23 6
|
6天前
|
XML Java 测试技术
《手把手教你》系列基础篇(九十一)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-下篇(详解教程)
【7月更文挑战第9天】在Java项目中,使用Logback配置可以实现日志按照不同包名输出到不同的文件,并且根据日志级别分开记录。
20 4
|
7天前
|
XML Java 测试技术
《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)
【7月更文挑战第8天】这篇教程介绍了如何使用Logback将Java应用的日志输出到文件中。首先,通过创建`logback.xml`配置文件,设置`FileAppender`来指定日志文件路径和格式。然后,提供了一个`RollingFileAppender`的例子,用于每日生成新的日志文件并保留一定天数的历史记录。文中包含配置文件的XML代码示例,并展示了控制台输出和生成的日志文件内容。教程最后提到了一些可能遇到的问题及解决建议。
15 0
《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)
|
12天前
|
XML 测试技术 数据格式
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
【7月更文挑战第3天】TestNG教程展示了如何自定义日志记录。首先创建一个名为`TestLog`的测试类,包含3个测试方法,其中一个故意失败以展示日志。使用`Assert.assertTrue`和`Reporter.log`来记录信息。接着创建`CustomReporter`类,继承`TestListenerAdapter`,覆盖`onTestFailure`, `onTestSkipped`, 和 `onTestSuccess`,在这些方法中自定义日志输出。
27 6
|
8天前
|
Java 关系型数据库 测试技术
《手把手教你》系列基础篇(八十九)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-上篇(详解教程)
【7月更文挑战第7天】Apache Log4j2的安全漏洞促使考虑使用logback作为替代的日志框架。Logback由log4j创始人设计,提供更好的性能,更低的内存使用,并且能够自动重载配置文件。它分为logback-core、logback-classic(实现了SLF4J API)和logback-access(用于Servlet容器集成)三个模块。配置涉及Logger、Appender(定义日志输出目的地)和Layout(格式化日志)。
15 1
|
11天前
|
Java 测试技术 Apache
《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)
【7月更文挑战第4天】Apache Log4j 是一个广泛使用的 Java 日志框架,它允许开发者控制日志信息的输出目的地、格式和级别。Log4j 包含三个主要组件:Loggers(记录器)负责生成日志信息,Appenders(输出源)确定日志输出的位置(如控制台、文件、数据库等),而 Layouts(布局)则控制日志信息的格式。通过配置 Log4j,可以灵活地定制日志记录行为。
27 4