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. Jetson TK1 二:usb无线网卡的使用

    一.总体是按照群里的文档“TK1连接无线网络”的步骤操作的,但也遇到了一些问题,如下: 1.自动配置设备并下载内核源代码到指定的目录下时(估计是解压时),出现时间超前之类的问题,原因是当前本地时间是几 ...

  2. iOS 读书笔记 第一章

    1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *arra ...

  3. Android ZXing 二维码、条形码扫描介绍

    本帖最后由 Shims 于 2013-11-9 12:39 编辑 最近公司的Android项目需要用到摄像头做条码或二维码的扫描,Google一下,发现一个开源的 ZXing项目.它提供二维码和条形码 ...

  4. 【J2EE】十三个规范:愿天下苍生,人人如猿。

    学习了J2ee后对java这个立足标准化的行为感到深深的佩服. 收买什么都不如收买人心,培养啥子都不如培养 习惯.没错,java就是在培养行业习惯,以一纸规范屹立不倒.毕竟技术什么的层出不穷,再新再前 ...

  5. docker on UP Board

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验和正常的图片.链接,请访问我的博客: http://www.cnblogs.co ...

  6. 一个简单演示样例来演示用PHP訪问表单变量

    首先编写表单页面orderform.html,用post方法请求服务端脚本文件:processorder.php orderform.html: <!DOCTYPE html> <h ...

  7. FastDFS的配置、部署与API使用解读(4)FastDFS配置详解之Client配置(转)

    一种方式是通过调用ClientGlobal类的初始化方法对配置文件进行加载,另一种是通过调用API逐一设置配置参数.后一种方式对于使用Zookeeper等加载属性的方式很方便. 1. 加载配置文件: ...

  8. dom get selector

    function realsQuery(element) { if(!element){ return ""; } var currentQuery=""; i ...

  9. 豆瓣面试题strstr)

    /*(豆瓣2013面试题strstr) 有一个在给定字符串中查找子串的函数strstr, 该函数从给定的字符串src中查找substr并返回一个整数, 指明substr第一次出现的位置(从0开始计数) ...

  10. liberOJ#6006. 「网络流 24 题」试题库 网络流, 输出方案

    #6006. 「网络流 24 题」试题库     题目描述 假设一个试题库中有 n nn 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 m mm 道题组成试卷.并要求 ...