學習筆記 Selenium3+java+Eclipse 通過Cookie跳過登入驗證碼
阿新 • • 發佈:2018-11-01
參考文章: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(); } }