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 是有问题的。

好了,时间不早了,今天就讲解和分享到这里,感谢您耐心地阅读!

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

  1. 《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...

  2. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

  3. 《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...

  4. 《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)

    1.简介 经过前边几篇文章和宏哥一起的学习,想必你已经知道了如何去查看Selenium相关接口或者方法.一般来说我们绝大多数看到的是已经封装好的接口,在查看接口源码的时候,你可以看到这个接口上边的注释 ...

  5. 《手把手教你》系列技巧篇(八)-java+ selenium自动化测试-元素定位大法之By id(详细教程)

    1.简介 从这篇文章开始,要介绍web自动化核心的内容,也是最困难的部分了,就是:定位元素,并去对定位到的元素进行一系列相关的操作.想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如 ...

  6. 《手把手教你》系列技巧篇(九)-java+ selenium自动化测试-元素定位大法之By name(详细教程)

    1.简介 上一篇宏哥已经介绍了通过id来定位元素,今天继续介绍其他剩下的七种定位方法中的通过name来定位元素.本文来介绍Webdriver中元素定位方法之By name,顾名思义,就是我们想要定位的 ...

  7. 《手把手教你》系列技巧篇(十三)-java+ selenium自动化测试-元素定位大法之By partial link text(详细教程)

    1.简介 本文按计划就要开始介绍partial link text,顾名思义是通过链接定位的(官方说法:超链接文本定位).什么是partial link text呢,看到part这个单词我们就可以知道 ...

  8. 《手把手教你》系列技巧篇(六十)-java+ selenium自动化测试 - 截图三剑客 -中篇(详细教程)

    1.简介 前面我们介绍了Selenium中TakeScreenshot类来截图,得到的图片是浏览器窗口内的截图.有时候,只截浏览器窗口内的图是不够的,而且TakeScreenshot截图只针对浏览器的 ...

  9. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

随机推荐

  1. Appium服务器初始化参数(Capability)

    原文:https://blog.csdn.net/lilongsy/article/details/83010101 appium官方说明:https://appium.io/docs/cn/writ ...

  2. CentOS 系统 查看 cpu核数

    转载自 :Centos下查看cpu核数 - 韩憨 - 博客园 (cnblogs.com) 1.概念物理CPU:实际Server中插槽上的CPU个数.物理cpu数量:可以数不重复的 physical i ...

  3. dos 之 for循环(小“病毒”)

    需求: 1.自动在D盘下创建test2019文件夹: 2.自动在test2019下面创建100个文件,并写入"这是文件几的内容!": 3.自动打开100个CMD运行窗口(保持打开状 ...

  4. 工厂模式(python)

    以字符串作为传递参数 以类名作为传递参数 来自为知笔记(Wiz)

  5. koa路由接口

    const router = require('koa-router')() //返回一个页面 router.get('/', async (ctx, next) => { global.con ...

  6. .NET对接极光消息推送

    什么是APP消息推送? 很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或者APP有更新了,会给用户推送是否选择更新的消息等等,这就是所谓的"消息 ...

  7. 【Java】File类

    File类 File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) File类声明在java.io包下 File类中涉及到关于文件或文件目录的创建.删除.重命名.修改时间.文件大小等方法,并 ...

  8. 【记录一个问题】android opencl c++: 不要Context, CommandQueue类的赋值函数

    一开始代码中这样写了: cl::Context ctx = cl::Context(CL_DEVICE_TYPE_GPU, NULL); cl::CommandQueue queue= cl::Com ...

  9. C++ 基本类型的大小

    C++的基本类型: char bool (unsigned) short (int) (unsigned) int (unsigned) long (int) (unsigned) long long ...

  10. web.xml最新配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmln ...