Selenium2 操作浏览器的Cookies

一、cookies广泛应用于web技术中,它伴随用户请求在web服务器和浏览器之间传递.....本文就在selenium WebDriver中如何读取浏览器的cookies以及如何在浏览器中使用已有的cookies 这两个方面而展开。

 

二、首先,分析第一个问题:WebDriver中如何读取浏览器的cookies?WebDriver包中已封装好关于Cookies的相关类和方法,通过WebDriver的manage().getCookies()方法而获取,详见下面代码:

 File cookieFile = new File(COOKIE_PATH);
  try {
   if(cookieFile.exists()){
    cookieFile.delete();
   }
   cookieFile.createNewFile();
   System.out.println("Create a new cookie file in:"+System.getProperty("user.dir"));
   //将当前的cookies写入指定文件
   BufferedWriter bWriter = new BufferedWriter(new FileWriter(cookieFile));
   for(Cookie cookie : driver.manage().getCookies()){
    bWriter.write(
       cookie.getName() + "/"
     + cookie.getValue() + "/"
     + cookie.getPath() + "/"
     + cookie.getExpiry() + "/"
     + cookie.isSecure());
    bWriter.newLine();
   }
   bWriter.flush();
   bWriter.close();
   
  } catch (Exception e) {
   e.printStackTrace();
  }

 

三、模拟绕过界面的用户认证,而通过selenium使用已保存的cookies信息直接登录界面,下面是通过selenium在浏览器中添加cookies的代码:

 try {
   File cooFile = new File(COOKIE_PATH);
   if(!cooFile.exists()){
    System.out.println("Not found the cookie file in path:" + COOKIE_PATH);
    return;
   }
   BufferedReader bReader = new BufferedReader(new FileReader(cooFile));
   String line;
   while((line = bReader.readLine()) != null){
    String arrCoo[] = line.split("/");
    System.out.println(arrCoo.length);
    String name="",value="",domain="",path="";
    Date expiry = null;
    boolean isSecure = false;
    for (int i = 0; i < arrCoo.length; i++) {
     name = arrCoo[0];
     value = arrCoo[1];
     domain = arrCoo[2];
     path = arrCoo[3];
     expiry = arrCoo[4] != "null"?new Date(arrCoo[4]):null;
     isSecure = Boolean.parseBoolean(arrCoo[5]);
    }
    System.out.println(name +"/"+ value + "/" + domain + "/" + path + "/" + expiry + "/" + isSecure);
    Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure);
    driver.manage().addCookie(cookie);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }

 

本文出自 “Alan_Y (Upspringing)” 博客,转载请与作者联系!

你可能感兴趣的:(浏览器,Cookies,selenium)