[Selenium] 操作浏览器 Cookies
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的更多相关文章
- selenium操作浏览器cookies
package test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; imp ...
- [Python爬虫]使用Selenium操作浏览器订购火车票
这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium) [Python爬虫]使用Python爬取静态网页-斗 ...
- 每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)
每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)
- selenium操作浏览器cookie方法
/** * 操作浏览器的cookie */ @Test public void testCookie()throws Exception{ drive ...
- selenium操作浏览器的前进和后退
前进关键字:driver.forward() 后退关键字:driver.back() 测试对象:1.https://www.baidu.com/ 2.https://www.sogou.com/ 实例 ...
- 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API
目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...
- 『心善渊』Selenium3.0基础 — 17、Selenium操作浏览器窗口的滚动条
目录 1.为什么操作滚动条 2.Selenium如何操作滚动条 3.Selenium操作滚动条方法 4.操作滚动条示例 5.下拉至聚焦元素的位置 (1)实现步骤: (2)实现示例: 1.为什么操作滚动 ...
- 『心善渊』Selenium3.0基础 — 18、使用Selenium操作浏览器的弹窗
目录 1.操作浏览器自带弹窗 2.操作浏览器页面自定义弹窗 1.操作浏览器自带弹窗 (1)说明: webdriver中处理JavaScript所生成的alert.confirm 以及prompt 弹窗 ...
- Selenium+java操作浏览器cookies
描述:登录CSDN,将登录信息cookies保存到文件,再次打开网页时,直接利用文件中的数据登录. 1. 获取cookies并保存到文件 步骤: ① 打开CSDN的登录界面: ② 填写用户名和密码: ...
随机推荐
- 数字IC设计入门必备——VIM自定义模板调用与VCS基本仿真操作示例
一.前言 毕业论文答辩结束,闲下来写篇文章.芯片研发人员都在Linux系统下借助各种EDA工具和代码语言完成工作,因此提高代码开发效率,熟练运用开发工具是十分必要的.本文讲述VIM编辑神器的veril ...
- vue之组件理解(一)
组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 data.computed.watch.methods 以及生命周期钩子等.仅有的例外是像 el 这样根实例特有的选项. ...
- STM32F10x_StdPeriph_Driver_3.5.0(中文版).chm的使用
以熟悉的固件库函数说明中函数GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_IintTypeDef *GPIO_InitStructure)为例 GPIOA...G ...
- 关于SIP一些总结
SIP(session Initiation protocol)会话初始协议,是应用层信令控制协议,主要应用于创建.修改.释放多媒体会话. 一般而言,SIP只负责不同UE之间的协商与通信,比如媒体能力 ...
- Mybatis详解
SqlSession(SqlSessionDaoSupport类) SqlSessionDaoSupportSqlSessionDaoSupport是一个抽象的支持类,用来为你提供SqlSession ...
- 洛谷 P2831 愤怒的小鸟
P2831 愤怒的小鸟 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (0,0)(0,0) 处,每次 Kiana 可以用它向第一象 ...
- win7配置java环境变量
http://jingyan.baidu.com/article/9f63fb91d87fb0c8400f0e93.html 安装JDK,从Oracel官方网站上下载,也可以通过搜索,进入链接.下载完 ...
- iOS开发之计算两个日期的时间间隔
//首先创建格式化对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDate ...
- android 文件读取(assets)
assets文件夹资源的访问 assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. 1. 先在Activity里面调用g ...
- java8 stream sorted
1.对象类型配列 List<Person> list = Arrays.asList( new Person(22, "shaomch", "man" ...