WebDriver 提供了一系列 Cookies 的操作来获取、填写、删除 Cookies 的方法,节省了多次在登陆页面的查找元素并填写登录信息的时间。

1)获取 Cookies ,并保存到文件中以备后续使用

package com.learningselenium.normalwebdriver;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.FileReader;

import java.util.Date;

import java.util.StringTokenizer;

import org.openqa.selenium.By;

import org.openqa.selenium.Cookie;

import org.openqa.selenium.Webdriver;

import org.openqa.selenium.firefox.FirefoxDriver;

public class testGetCookies{

  public static void main(String... args){

    WebDriver driver = new FirefoxDriver();

    driver.get("http://zhizhu.com/#signin");

    //填写用户信息,然后登陆

    driver.findElement(By.name("email")).sendKeys("seleniumcookies@126.com");

    driver.findElement(By.name("password").sendKeys("cookies123"));

    if(driver.findElement(By.name("rememberme")).isSelected()){

      driver.findElement(By.name("remermberme")).click();

    }

    driver.findElement(By.className("sign-button")).click();

    

    File cookieFile = new File("zhizhu.cookie.txt");

    try{

      cookieFile.delete();

      cookieFile.createNewFile();

      FileWriter fileWriter = new FileWriter(cookieFile);

      BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

      for (Cookie cookie : driver.manage().getCookies()){

        bufferedWriter.write((cookie.getName() + ";" + cookie.getDomain() + ";" + cookie.getExpiry() + ";" + cookie.isSecure()));

        bufferedWriter.newLine();

      }

      bufferedWriter.flush();

      bufferedWriter.close();

      fileWriter.close();

    }catch (Exception ex){

      ex.printStackTrace();

    }

    driver.quit();

  }

}

2)读取保存的Cookies 信息并自动填充到新打开的浏览器 Cookies 中,然后直接进入登陆状态后的页面

public class testAddCookies{

  private static BufferedReader bufferedReader;

  public static void main(String... args){

    WebDriver driver = new FirefoxDriver();

    driver.get("http://zhizhu.com/#signin");

    try{

      File cookieFile = new File("zhihu.cookie.txt");

      FileReader fr = new FileReader(cookieFile);

      bufferedReader = new BufferedReader(fr);

      String line;

      while((line = bufferedReader.readLine()) != null){

        StringTokenizer stringTokenizer = new StringTokenizer(line, ";");

        while (stringTokenizer.hasMoreTokens()){

          String name = stringTokenizer.nextToken();

          String value= stringTokenizer.nextToken();

          String domain = stringTokenizer.nextToken();

          String path = stringTokenizer.nextToken();

          Date expiry = null;

          String dt;

          if(! (dt = stringTokenizer.nextToken()).equals("null")){

            expiry = new Date(dt);

          }

          boolean isSecure = new Boolean(stringTokenizer.nextToken()).booleanVaue();

          Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure);

        }

      }

    }catch(Exception ex){

      ex.printStackTrace();

    }

    driver.get("http://www.zhihu.com");

}    

[Selenium] 操作浏览器 Cookies的更多相关文章

  1. selenium操作浏览器cookies

    package test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; imp ...

  2. [Python爬虫]使用Selenium操作浏览器订购火车票

    这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium) [Python爬虫]使用Python爬取静态网页-斗 ...

  3. 每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

    每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

  4. selenium操作浏览器cookie方法

    /**     * 操作浏览器的cookie     */        @Test    public void testCookie()throws Exception{        drive ...

  5. selenium操作浏览器的前进和后退

    前进关键字:driver.forward() 后退关键字:driver.back() 测试对象:1.https://www.baidu.com/ 2.https://www.sogou.com/ 实例 ...

  6. 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API

    目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...

  7. 『心善渊』Selenium3.0基础 — 17、Selenium操作浏览器窗口的滚动条

    目录 1.为什么操作滚动条 2.Selenium如何操作滚动条 3.Selenium操作滚动条方法 4.操作滚动条示例 5.下拉至聚焦元素的位置 (1)实现步骤: (2)实现示例: 1.为什么操作滚动 ...

  8. 『心善渊』Selenium3.0基础 — 18、使用Selenium操作浏览器的弹窗

    目录 1.操作浏览器自带弹窗 2.操作浏览器页面自定义弹窗 1.操作浏览器自带弹窗 (1)说明: webdriver中处理JavaScript所生成的alert.confirm 以及prompt 弹窗 ...

  9. Selenium+java操作浏览器cookies

    描述:登录CSDN,将登录信息cookies保存到文件,再次打开网页时,直接利用文件中的数据登录. 1. 获取cookies并保存到文件 步骤: ① 打开CSDN的登录界面: ② 填写用户名和密码: ...

随机推荐

  1. fmt 包中的函数和方法

    / Fprintf 将参数列表 a 填写到格式字符串 format 的占位符中// 并将填写后的结果写入 w 中,返回写入的字节数func Fprintf(w io.Writer, format st ...

  2. AC日记——草地排水 codevs 1993

    1993 草地排水 USACO  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 在农夫约翰的农场上,每 ...

  3. C语言使用以及其它语言经常出的错误

    1. 计算优先级 i/*pi/(*p) //默认即用“()”花括号分隔即可 2.分号结束 ; ; if(i<j);{ //code } //分号结束必须看清楚 3.声明变量 ; ; //声明变量 ...

  4. 使用BatteryHistorian分析和优化应用电量

    欢迎Follow我的GitHub, 关注我的CSDN. 在Android项目中, 较难监控应用的电量消耗, 可是用户却很关心手机的待机时间. 过度耗电的应用, 会遭到用户无情的卸载, 不要存在侥幸心理 ...

  5. Linux启动过程笔记

    Linux启动过程 1.启动流程(BIOS->MBR:Boot Code->引导GRUB->载入内核->运行init->runlevel) 2./boot/grub/下有 ...

  6. MeiTuanLocateCity

    https://github.com/eltld/MeiTuanLocateCity

  7. hdoj 4932 Miaomiao&#39;s Geometry 【暴力枚举】

    题意:在一条直线上有n个点.取一长度差为x的区间. 规定点必须是区间的端点. 让你找出来最大的x 策略:rt 分析可得:两个相邻点之间的区间要么是两个点的差,要么就是两个点的差的一半,那我们就简单枚举 ...

  8. 12.怎样自学Struts2发送邮件和验证补充[视频]

    12.怎样自学Struts2发送邮件和验证补充[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pan.b ...

  9. Python 004- 利用图灵小机器人来搭建微信聊天自动回复机器人

    实现步骤: 1.获取微信的使用权,即python脚本能控制微信收发信息. 2.python脚本收到聊天信息后,要对该信息进行处理,返回机器人的回应信息. 一二两步要用到wxpy库里的各种组件来收发信息 ...

  10. js编程精解--笔记

    看这本书的目的是为了更好的使用mongodb,所以只看js编程语言基础,不看浏览器和画布. 需要看1-11章,共160页 第一章 值.类型和运算符 第二章 程序结构 第三章 函数 第四章 数据结构:对 ...