一、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(); } |