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标签的只读写法
<a href="baidu.com" onclick="event.returnValue=false;">百度</a> a链接的只读 ...
- Swift三元条件运算
三元条件运算的特殊在于它是有三个操作数的运算符,它的原型是问题?答案1:答案2.它简洁地表达根据问题成立与否作出二选一的操作.如果问题成立,返回答案1的结果; 如果不成立,返回答案2的结果. 使用三元 ...
- IOS 关于property的详细解法
1.格式 @property (参数1,参数2,...) 类型 名字; eg: @property(nonatomic,retain) UIWindow *window; 其中参数主要分为三类: • ...
- [leetcode-474-Ones and Zeroes]
In the computer world, use restricted resource you have to generate maximum benefit is what we alway ...
- [leetcode-605-Can Place Flowers]
Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, ...
- [leetcode-485-Max Consecutive Ones]
Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...
- 读书共享 Primer Plus C-part 7
第十章 数组和指针 1.关于二维数组跟指针 #include<stdio.h> int main() { ][]={{,,,},{,,,},{,,,}}; ; ;i< ;i++) ...
- Unity应用架构设计(13)——日志组件的实施
对于应用程序而言,日志是非常重要的功能,通过日志,我们可以跟踪应用程序的数据状态,记录Crash的日志可以帮助我们分析应用程序崩溃的原因,我们甚至可以通过日志来进行性能的监控.总之,日志的好处很多,特 ...
- (转载)Jython 简单入门
转载链接:http://willzh.iteye.com/blog/307222 1. 用Jython调用Java类库 第一步.创建Java类 写一个简单的Java类,用Point来示例: impor ...
- echarts的部署和使用
echarts是百度开发的一款商业级.开源免费的前端图表组件,具体可访问其主页:http://echarts.baidu.com/ echarts目前已经发布了2.0版本,使用起来非常的方便,并且效果 ...