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 ...
随机推荐
- 数据结构之网络流入门(Network Flow)简单小节
网络流的相关定义: 源点:有n个点,有m条有向边,有一个点很特殊,只出不进,叫做源点. 汇点:另一个点也很特殊,只进不出,叫做汇点. 容量和流量:每条有向边上有两个量,容量和流量,从i到j的容量通常用 ...
- 精通 JS正则表达式(转)
转载的目的在于:增加一些自己看不懂的解释.内容只加不改,灰色字体是自己寻找并增加的. 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式 ...
- (转载)oracle的v$sqlarea表
原文摘自:http: [V$SQLAREA] 本视图持续跟踪所有shared pool中的共享cursor,在shared pool中的每一条SQL语句都对应一列.本视图在分析SQL语句资源使用方面 ...
- 奇舞js笔记——第0课——如何写好原生js代码
摘要 1.好的代码职责要清晰,javscript不要用来操作样式: 2.API要设计的合理:通用性,适度的抽象(数据抽象,过程抽象),可扩展性: 3.效率问题:用好的.合适的算法(前端程序员要把自己当 ...
- 搭建ES6运行环境
当ES5还没有完全普及时,ES6就接踵而来了,2015年6月17日,ECMAScript 6发布正式版本,即ECMAScript 2015,我们也简称它为ES6或ES2015.在发布之后的将近一年内, ...
- Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging
通过将浏览器所在客户端的本地应用注册为Chrome浏览器扩展的“本地消息主机(native messaging host)”,Chrome浏览器扩展还可以与客户端本地应用之间收发消息. 客户端的本地应 ...
- 【Stack Overflow -- 原创加工、原创整理、生产实战】-- 深度复制
一.说明 1.本程序的核心代码不是我原创的,是我在Stack Overflow上搜集后加工出来的,原作者已忘记了~ 2.这段程序是我在上海携程(2014年左右)上班时整理并在生产环境应用的,先后经历了 ...
- spring 框架的xml文件如何读取properties文件数据
spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...
- [基础架构]PeopleSoft都有哪些进程运行在进程服务器上
PSPRCSRV:(PSPRCSRV.EXE) 该进程负责启动所有服务进程. 每隔15s,该进程就会去看进程调度器中是否有需要运行的进程请求.如果没有需要运行的则sleep15s,然后再次检查. 如果 ...
- Android之圆点导航的两个案例(ViewPager)
案例一效果: 布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...