Selenium+java操作浏览器cookies
描述:登录CSDN,将登录信息cookies保存到文件,再次打开网页时,直接利用文件中的数据登录。
1. 获取cookies并保存到文件
步骤:
① 打开CSDN的登录界面;
② 填写用户名和密码;
③ 新建文件txt;
④ 获取cookies,并将cookies保存到先前新建的文件中。
代码:
@Before
public void Setup(){
File chromeDriverPath = new File("D:\\Selenium\\webdriver\\chromedriver.exe");
System.setProperty("webdriver.chrome.driver", chromeDriverPath.getAbsolutePath());
webDriver = new ChromeDriver();
} @Test
public void writeCookies() { webDriver.get("https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn");
webDriver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("用户名");
webDriver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("密码"); if (webDriver.findElement(By.xpath("//*[@id=\"rememberMe\"]")).isSelected()){
webDriver.findElement(By.xpath("//*[@id=\"rememberMe\"]")).click();
} webDriver.findElement(By.xpath("//*[@id=\"fm1\"]/input[6]")).click(); File cookieFile = new File("csdn.cookie.txt"); try {
cookieFile.delete();
cookieFile.createNewFile();
FileWriter fileWriter = new FileWriter(cookieFile);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); for (Cookie cookie:webDriver.manage().getCookies()){
bufferedWriter.write((cookie.getName()+";"+
cookie.getValue()+";"+
cookie.getDomain()+";"+
cookie.getPath()+";"+
cookie.getExpiry()+";"+
cookie.isSecure()));
bufferedWriter.newLine();
}
bufferedWriter.flush();
bufferedWriter.close();
fileWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} webDriver.quit();
}
2. 读取先前文件中保存的信息,将信息添加到新建的cookie中,将新建的cookie添加到浏览器中,实现自动登陆。
步骤:
① 打开CSDN界面;
② 从保存的文件中取出登陆的信息,添加到cookie中,将cookie添加到浏览器中;
③ 打开CSDN界面。
代码:
@Test
public void getCookies(){
BufferedReader bufferedReader;
webDriver.get("https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"); try {
File cookieFile = new File("csdn.cookie.txt");
FileReader fileReader = new FileReader(cookieFile);
bufferedReader = new BufferedReader(fileReader); 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()).booleanValue();
Cookie cookie = new Cookie(name, value,domain,path,expiry,isSecure);
webDriver.manage().addCookie(cookie);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} webDriver.get("http://blog.csdn.net/"); }
结果:状态直接变成登录状态。
(个人学习笔记,不对之处,多多指正,谢谢!)
Selenium+java操作浏览器cookies的更多相关文章
- [Selenium] 操作浏览器 Cookies
WebDriver 提供了一系列 Cookies 的操作来获取.填写.删除 Cookies 的方法,节省了多次在登陆页面的查找元素并填写登录信息的时间. 1)获取 Cookies ,并保存到文件中以备 ...
- java selenium (十) 操作浏览器
本篇文章介绍selenium 操作浏览器 阅读目录 浏览器最大化 前进,后退, 刷新 public static void testBrowser(WebDriver driver) throws E ...
- Selenium+java - 操作滚动条
前言 在写脚本时,总会遇到一种情况,就是当滚动拉倒最下面了,表单或者下拉框.按钮这些元素未在当前页面展示,而webdriver提供的方法都是操作当前页面可见的元素,这时我们使用JavaScript操作 ...
- selenium操作浏览器cookies
package test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; imp ...
- Selenium webdirver Java 操作浏览器
打开浏览器 HtmlUnit Driver 优点:不会实际打开浏览器,运行速度很快. 缺点:对JavaScript的支持不够好,有时会捕获不到页面元素. 使用:WebDriver driver=new ...
- Selenium Java关闭浏览器
在学习selenium的过程中发现一个问题,各种博客/教程都是教人用selenium的quit()和close()方法关闭浏览器. 但这不是我要的结果.这两个方法的前提是,用webdriver打开浏览 ...
- Selenium+java - Edge浏览器启动
写在前面 随着win10系统的普及,使得Edge浏览器得到广泛使用.从自动化角度看,自然微软也一直不断提供着支持服务,系统版本更新,对应的Edge浏览器版本也在更新,当然对应的驱动版本也会发生变化. ...
- selenium+python操作浏览器
前面已经把环境搭建好了,下面我们就正式学习selenium的webdriver框架.本篇主要讲如何用Python调用webdriver框架的API,对浏览器做一些基本的操作,如打开.前进.后退.刷新. ...
- Selenium webdirver 操作浏览器
打开浏览器 HtmlUnit Driver 优点:不会实际打开浏览器,运行速度很快. 缺点:对JavaScript的支持不够好,有时会捕获不到页面元素. 使用:WebDriver driver=new ...
随机推荐
- html之改变图片透明度而不改变文字的透明度--两种方法实现
图片与图片上的文字设置不同的透明度的两种方法: 第一种方法:背景图+定位+background: url(timg.jpg)no-repeat; <!DOCTYPE html> <h ...
- jQuery淡入淡出的轮播图
html结构: <div class="banna"> <ul class="img"> ...
- java数组中取出最大值
class Demo{ public static void main(String []args){ int[] arr={3,54,456,342,2798}; int max=getMax(ar ...
- IP地址分类百科
IP地址分类介绍 这里讨论IPv4,IP地址分成了A类.B类.C类.C类.E类,如下图所示: 解释: A类以0开头,网络地址有7位,主机地址有24位,举例:A类地址:0 10000000 000000 ...
- htm5
htm5在html4.0. xhtm1.0的基础上增加了音频.视频.拖拽等功能,不过,htmL5,还在完善中,不过大部分浏览器都已经支持了部分功能. 兼容性: 最新版本的 Safari.Chrome. ...
- angular.extend、angular.$watch、angular.bootstrap
1.angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 直接上代 ...
- (转载)Oracle10g 数据泵导出命令 expdp 使用总结(二)
原文链接:http://hi.baidu.com/edeed/item/2c454cff5c559f773d198b94 Oracle10g 数据泵导出命令 expdp 使用总结(一) 1.1.2 e ...
- ubuntu主机名修改
1.查看主机名 在Ubuntu系统中,快速查看主机名有多种方法: 其一,打开一个GNOME终端窗口,在命令提示符中可以看到主机名,主机名通常位于"@"符号后: 其二,在终端窗口中输 ...
- voa 2015.4.29
Nepal has declared three days of mourning for the victims of Saturday's 7.8 magnitude earthquake tha ...
- oracle常用函数及关键字笔记
--函数及关键字--1.trim,ltrim,rtrim 去除字符,无指定默认去除空格SELECT TRIM('a' FROM 'aafhfhaaaaaaaa'), LTRIM('aafhfhaaaa ...