描述:登錄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/"); }
結果:狀態直接變成登錄狀態。
(個人學習筆記,不對之處,多多指正,謝謝!)
