1. 程式人生 > >學習筆記 Selenium3+java+Eclipse 通過Cookie跳過登入驗證碼

學習筆記 Selenium3+java+Eclipse 通過Cookie跳過登入驗證碼

參考文章:https://blog.csdn.net/ab_2016/article/details/78427084

環境:

fidder

java + selenium 

Cookie的處理分為:

伺服器向客戶端傳送cookie

瀏覽器將cookie儲存

之後每次http請求瀏覽器都會將cookie傳送給伺服器端

伺服器端向客戶端傳送Cookie是通過HTTP響應報文實現的,在Set-Cookie中設定需要像客戶端傳送的cookie。

第一步 :如果第一次fidder 會自動抓取當前瀏覽器資料 ,組合鍵Ctrl+X 清除,如圖。

第二步:開啟瀏覽器 設定代理伺服器 手動配置代理  火狐→選項→高階→網路

第三步:開啟瀏覽器 訪問百度首頁 正常登入百度賬號

第四步:通過Fiddler獲取登入請求的Cookie。找到Host為“passport.baidu.com”的URL,在右側視窗檢視該請求的Cookie。

然後,找到重要的兩個引數“BAIDUID”和“BDUSS”。

第五步:編寫Selenium自動化測試指令碼,跳過登入。

首先,訪問百度首頁,處於未登入狀態。

然後,通過Selenium所提供add_cookie()方法新增Cookie資訊。

最後,重新整理頁面,現在已經是登入狀態了,獲取登入之後的使用者名稱並列印。

附上自己用java學習程式碼:

package lessons;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.Cookie;

public class BaiduDemo {
	 
	public static void  main (String[] args) throws InterruptedException {
		
		//指定驅動路徑
		System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
		//初始化一個谷歌瀏覽器名稱為 driver
		WebDriver driver = new ChromeDriver();
		//視窗最大化
		driver.manage().window().maximize();
		//開啟網址
		driver.get("http://www.baidu.com");
		
		// 通過fiddler抓包工具,找到Host為“passport.baidu.com”的URL,在右側視窗檢視該請求的Cookie,
		// 找到重要的兩個引數“BAIDUID”和“BDUSS”
		Cookie c1 = new Cookie("BAIDUID","C3AB656E6CAC6997B5C0EC9A8EFA3DEE:SL=0:NR=10:FG=1");
		Cookie c2 = new Cookie("BDUSS","ZnZmpSdnpVaFFqcHNSWVNCSHBVdUMya3VRaUsxcGp6NXZwWEdBbHE1Nml2OEpiQVFBQUFBJCQAAAAAAAAAAAEAAACXl~dKztLQ1c31y~nS1LK7sK4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKIym1uiMptbUH");
		
		driver.manage().addCookie(c1);
		driver.manage().addCookie(c2);
		//重新整理頁面 
		driver.navigate().refresh();
		//獲取登入使用者名稱
		String username =driver.findElement(By.className("user-name")).getText();
		//列印登入使用者名稱
		System.out.println("百度ID is :"+username);
		Thread.sleep(3000);
		driver.quit();

   }
	
 }