Selenium2学习-017-WebUI自动化实战实例-015-获取浏览器中的 cookie 信息

日常我们在使用浏览器时,尤其是登录 WEB 应用时,我们的一些信息其实是保存在了浏览器的 cookie 信息中。我们可以通过浏览器自带的开发工具,进行查看相应的 cookie 信息,例如在火狐、chrome 中均可通过 F12 打开开发者工具打开。以下截图为在 chrome 中打开易迅网时的 cookie 信息:

若是小主您登录了相应的网页应用,cookie 中还会含有您的一些用户信息内容。那么这些 cookie 信息在我们日常 WebUI 自动化脚本的编写过程中有什么用途呢 ? 可以作为网页打开是否正确的校验依据,可以作为用户是否正确登录的判定依据等等。那么我们如何获取相应的 cookie 信息呢,以下自动化测试脚本以易迅网易迅账号登录获取其 cookie 给出了明确的实例演示,其他网站的登录 cookie 信息获取相同。

闲话少述,小二上码。。。敬请各位小主参阅,希望能对您在日常的 WebUI 自动化脚本编写有一定的启发和帮助。若有不足或错误之处,敬请大神指正,不胜感激!

  1 /**
  2  * Aaron.ffp Inc.
  3  * Copyright (c) 2004-2015 All Rights Reserved.
  4  */
  5 package main.aaron.demo.cookie;
  6
  7 import java.io.BufferedWriter;
  8 import java.io.File;
  9 import java.io.FileWriter;
 10 import java.util.concurrent.TimeUnit;
 11
 12 import javax.swing.JDialog;
 13 import javax.swing.JOptionPane;
 14 import javax.swing.JPasswordField;
 15
 16 import org.openqa.selenium.By;
 17 import org.openqa.selenium.Cookie;
 18 import org.openqa.selenium.WebElement;
 19 import org.testng.annotations.AfterClass;
 20 import org.testng.annotations.Test;
 21
 22 import main.aaron.sele.core.TestCase;
 23
 24 /**
 25  * get cookie info by manual login
 26  *
 27  * @author Aaron.ffp
 28  * @version V1.0.0: autoSeleniumDemo main.aaron.demo.cookie Cookies.java, 2015-6-19 13:53:05 Exp $
 29  */
 30 public class Cookies extends TestCase{
 31     private final String f_cookie = this.PROJECTHOME + this.FILESEPARATOR + "cookie" + this.FILESEPARATOR + "browser.data";
 32     private String baseUrl = "";
 33     File file;
 34
 35     @Test
 36     public void addCookie(){
 37         this.baseUrl = "https://base.yixun.com/login.html?url=http%3A%2F%2Fbase.yixun.com%2F";
 38
 39         // wait ten seconds
 40         this.webdriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 41
 42         // navigate to login page
 43         this.webdriver.get(this.baseUrl);
 44
 45         // change to login frame
 46         this.webdriver.switchTo().frame("id_iframe_login");
 47
 48         // click yixun_login, change to yixun login tab
 49         WebElement yx_login = this.webdriver.findElement(By.cssSelector(".fast_yx"));
 50         yx_login.click();
 51
 52 //        this.webdriver.switchTo().frame("id_iframe_login");
 53
 54         WebElement user = this.webdriver.findElement(By.id("yxname"));
 55         WebElement pass = this.webdriver.findElement(By.id("yxpw"));
 56         WebElement code = this.webdriver.findElement(By.id("yxcode"));
 57         WebElement subm = this.webdriver.findElement(By.id("submit-button"));
 58
 59         // clean the input dialog
 60         user.clear();
 61         pass.clear();
 62         code.clear();
 63
 64         // input login info
 65         user.sendKeys("请小主们自行注册易迅网易迅账号");
 66         pass.sendKeys("请小主们自行注册易迅网易迅账号");
 67         code.sendKeys(this.inputDialog());
 68
 69         // click login button
 70         subm.click();
 71
 72         this.file = new File(this.f_cookie);
 73
 74         // store login cookie
 75         try {
 76             Thread.sleep(15000);
 77
 78             this.file.delete();
 79
 80             this.file.createNewFile();
 81
 82             FileWriter fw = new FileWriter(this.f_cookie);
 83
 84             BufferedWriter bw = new BufferedWriter(fw);
 85
 86             for (Cookie cookie : this.webdriver.manage().getCookies()) {
 87                 bw.write(cookie.getName() + ";" +
 88                          ("".equals(cookie.getValue()) || (cookie.getValue() == null) ? "": cookie.getValue()) + ";" +
 89                          cookie.getDomain() + ";" +
 90                          cookie.getPath() + ";" +
 91                          cookie.getExpiry() + ";" +
 92                          cookie.isSecure());
 93                 bw.newLine();
 94             }
 95
 96             bw.flush();
 97             bw.close();
 98             fw.close();
 99         } catch (Exception e) {
100             e.printStackTrace();
101         } finally {
102             System.out.println("cookie write to file : " + this.f_cookie);
103         }
104     }
105
106     /**
107      * input dialog
108      *
109      * @author Aaron.ffp
110      * @version V1.0.0: autoSeleniumDemo main.aaron.demo.cookie Cookies.java inputDialog, 2015-6-19 13:55:05 Exp $
111      *
112      * @return
113      */
114     public String inputDialog() {
115         JPasswordField pass = new JPasswordField(30);
116         JOptionPane id = new JOptionPane("Please input verify code...", JOptionPane.PLAIN_MESSAGE);
117
118         id.add(pass);
119
120         pass.setEchoChar(‘*‘);
121         JDialog inputPassDialog = id.createDialog(id, "inputdialog");
122
123         inputPassDialog.setVisible(true);
124
125         String inStr = String.valueOf(pass.getPassword());
126         return inStr;
127     }
128
129     @AfterClass
130     public void afterClass(){
131         this.webdriver.close();
132         this.webdriver.quit();
133     }
134 }

易迅网易迅账号登录获取 cookie 实例源代码

注意:在实际的使用中, 小主们需要将 cookie 文件保存的位置修改为本地的合法路径才可,对应代码如下:

private final String f_cookie = this.PROJECTHOME + this.FILESEPARATOR + "cookie" + this.FILESEPARATOR + "browser.data";

至此,WebUI 自动化功能测试脚本第 015-获取浏览器中的 cookie 信息 顺利完结,希望此文能够给初学 Selenium 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

时间: 2024-10-12 02:57:33

Selenium2学习-017-WebUI自动化实战实例-015-获取浏览器中的 cookie 信息的相关文章

Selenium2学习-003-Selenium2 WebUI自动化实战实例-001-百度搜索

此文主要通过百度搜索功能,进行 Selenium2 的实战实例讲解,文中所附源代码于 2015-01-16 02:01 亲测通过,敬请亲们阅览.希望能对初学 Selenium2 UI 自动化测试编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! 脚本实现功能步骤如下所示: 启动 Chrome 浏览器 打开百度网址:www.baidu.com 输入搜索项:范丰平 博客园 获取搜索结果的第一项,并打开 关闭 Chrome 浏览器(为显示打开效果,已将此项注释) 夜已深了,鬼话少述,直接上源代

Selenium2学习-005-WebUI自动化实战实例-003-三种浏览器(Chrome、Firefox、IE)启动脚本

此文主要通过 三种浏览器(Chrome.Firefox.IE)启动脚本 功能,进行 Selenium2 三种浏览器启动方法的实战实例讲解.文中所附源代码于 2015-01-18 20:33 亲测通过,敬请亲们阅览.进行编写登录自动化测试脚本,若您直接使用此文所附的源代码运行测试,则需要修改对应 浏览器 或 webdriver 的路径,否则将会引起相应的报错,请知悉. 希望能对初学 Selenium2 WebUI 自动化测试编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! 一.各浏览器

Selenium2学习-023-WebUI自动化实战实例-021-获取浏览器显示区域大小,通过 WebDriver 截图功能

之前的博文 020-JavaScript 在 Selenium 自动化中的应用实例之二(获取浏览器显示区域大小) 简述了通过 JavaScript 获取浏览器显示区域大小,此文将简述另一种获取浏览器显示区域大小的方法,即通过 WebDriver 的截图功能,获取显示区域的截图,通过截图的大小获取浏览器显示区域的大小. 直接上码了,敬请小主们参阅,若有不足之处,敬请大神指正,不胜感激! 1 /** 2 * Get width and height about display screen area

Selenium2学习-019-WebUI自动化实战实例-017-获取浏览器类型

Web UI 自动化脚本分布执行过程中有时候需要获取浏览器的相关信息,此文给出了一个简略获取浏览器类型的方法,敬请各位小主们参阅.若有不足之处,敬请大神指正,不胜感激! 闲话少述,上码. 1 /** 2 * Get browser type, for execute JavaScript by Selenium 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core Selenium

Selenium2学习-021-WebUI自动化实战实例-019-设置浏览器窗口位置大小

前文简略讲述了如何获取浏览器窗口的位置和大小,此文讲述如何通过 webdriver 设置浏览器窗口的位置和大小. 直接上码了...... 1 /** 2 * Set browser size for expected setting 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java setBrowserSize, 2015-7-28 01:1

Selenium2学习-020-WebUI自动化实战实例-018-获取浏览器窗口位置大小

在 UI 自动化测试过程中,每个机器上浏览器的默认大小.默认位置不尽相同,需要截图的时候,页面元素可能显示不完全,因而我们需要知道浏览器的宽度,或者直接在启动浏览器时,设置浏览器的宽度或位置(此文暂不涉及,后续文章更新,谢谢). 直接上码了: 1 /** 2 * Get position and size of browser 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core

Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题

日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚本识别的难度也越来越高.这对我们自动化脚本编写带了非常的不便,那么如何解决登录时的验证码问题呢?经常有初学自动化脚本编写的小主们问及此问题. 此文主要针对如何解决自动化测试脚本中含登录态的操作问题,即如何降低验证码对自动化脚本编写过程中的解决方法进行分析和解决,并以实例演示(基于易迅网易迅账号登录)

Selenium2学习-007-WebUI自动化实战实例-005-解决 Firefox 版本不兼容:org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary

此文主要讲述 Java 运行 Selenium 脚本时,因 Friefox 浏览器版本与 selenium-server-standalone-x.xx.x.jar 不兼容引起的 org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary 报错解决方法. 希望能对初学 Selenium2 WebUI 自动化测试编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! 之前给朋友初步介绍了 S

Selenium2学习-034-WebUI自动化实战实例-032-页面快照截图应用之三 -- 区域截图(专业版)

之前有写过两篇博文讲述了 WebUI 自动化测试脚本中常用的截图方法,敬请参阅如下所示链接: 浏览器显示区域截图 浏览器指定区域截图 那么当需要截取的区域不在浏览器显示窗口范围之内时,之前的方法显然无法满足,那么该如何操作呢? 刷新页面,相当于页面归位操作 判断要截取的区域范围与当前浏览器显示区域大小关系,若截取范围大于显示区域,则重置浏览器窗口大小 模拟鼠标操作滚动屏幕,使需要截取的区域显示到浏览器窗口 重新计算截取起始位置相对于当前显示区域的坐标 调用之前的截图方法截图 下面就以获取易迅网首