描述:登录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/"); }

结果:状态直接变成登录状态。

(个人学习笔记,不对之处,多多指正,谢谢!)

最新文章

  1. HTML5新增标签及具体用法
  2. Database Schema Reader
  3. python学习第三天
  4. JavaScript基础2---控制权DOM操作
  5. NOI题库--砝码称重V2(多重背包2^n拆分)
  6. RESTful和JAX-RS
  7. Java+FlexPaper+swfTools 文档在线预览demo
  8. Make和Makefile
  9. Android读取url图片保存及文件读取
  10. iframe中的各种跳转方法(转)
  11. JAVA中,字符串STRING与STRINGBUILDER的效率差异
  12. iptables 顺序
  13. Android OpenGL ES(九)绘制线段Line Segment .
  14. 第二章:在HTML中使用JavaScript
  15. java线程池的原理及实现
  16. 使用WakeLock使Android应用程序保持后台唤醒
  17. 微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异
  18. Golang入门教程(十七)Linux/Windows下快速搭建和配置NSQ
  19. 开通博客的第一天上传我的C#基础笔记。
  20. 【洛谷P1854】花店橱窗 线性dp+路径输出

热门文章

  1. echarts3 清空上一次加载的series数据
  2. 让textarea和附近的文字居中对齐
  3. Generic(泛型)
  4. 【LeetCode】258. Add Digits
  5. JAVA基础——数组详解
  6. touchmover 手机端拖动方法
  7. Spring Security-自定义配置Filter
  8. Vijos 1040 高精度乘法
  9. Spring HandlerInterceptor
  10. JavaScript+canvas 利用贝塞尔曲线绘制曲线