Selenium+Java自動化之如何優雅繞過驗證碼java
走心原創第15期
chrome
驗證碼問題對於每一個ui自動化的同窗而言,相信都是個蛋疼的問題,對於驗證碼的處理我我的不提倡破解,不要去想破解方法,這個驗證碼原本就是爲了防止別人自動化登陸的。若是大家公司的驗證碼很容易被你破解了,那麼只能說大家公司驗證碼級別不高,去建議開發提升驗證碼級別了。
對於驗證碼,要麼是讓開發把驗證碼寫死(傳說中的萬能驗證碼),如:1234,要麼就是低調的儘可能繞過去。
下面本文來介紹下如何繞過下圖驗證碼,進入博客園
工具
Fiddler.exe
IDEA/Eclipse
selenium的cookie操做
1、使用Fiddler抓包
1.通常登錄網站成功後,會生成一個已登陸狀態的cookie,那麼只須要直接把這個值拿到,用selenium進行addCookie操做便可。
2.能夠先手動登陸一次,而後抓取這個cookie,這裏咱們就須要用抓包工具fiddler了
3.先打開博客園登陸界面,手動輸入帳號和密碼(不要點登陸按鈕)
4.打開fiddler抓包工具,此時再點博客園登陸按鈕
5.登陸成功後,再查看cookie變化,發現多了兩組參數,多的這兩組參數就是咱們想要的,copy出來,一會有用
2、cookie操做
1.這裏須要添加兩個cookie,一個是.CNBlogsCookie,另一個是.Cnblogs.AspNetCore.Cookies。
2.我這裏打開的網頁是博客園子的首頁:https://home.cnblogs.com/,沒進入登陸頁。
3.添加cookie後刷新,接下來就是見證奇蹟的時刻了。
4.關於cookie操做,有興趣的同窗可查看官方api
5.這裏咱們只使用addCookie這個接口的方法實現
Cookie cookie=new Cookie("key", "value"); driver.manage().addCookie(cookie);
3、參考代碼api
package com.test.demo; import org.openqa.selenium.Cookie; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; import java.util.Set; import java.util.concurrent.TimeUnit; /** * @author longrong.lang * 繞過驗證碼登錄 */ public class LoginWithCookie { WebDriver driver; @BeforeClass public void beforeClass() { driver = new ChromeDriver(); } @Test public void testLoginWithCookie() { driver.get("https://home.cnblogs.com/"); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //cookie遍歷使用 Set<Cookie> cookies = driver.manage().getCookies(); for (Cookie cookie : cookies) { System.out.println(cookie.getName() + "\t" + cookie.getValue()); } Cookie cookie = new Cookie("key", "value"); //添加cookie操做 driver.manage().addCookie(cookie); Cookie cookie1 = new Cookie("key", "value"); driver.manage().addCookie(cookie1); Cookie cookie2 = new Cookie(".key", "value"); driver.manage().addCookie(cookie2); Cookie cookie3 = new Cookie("key", "value"); driver.manage().addCookie(cookie3); driver.manage().window().maximize(); //下面是見證奇蹟的時候了 driver.navigate().refresh(); } @AfterClass public void afterClass() { //driver.quit(); } }
效果圖:
視頻效果以下:cookie
有幾點須要注意:
1.登陸時候要勾選下次自動登陸按鈕。
2.addCookie()只添加name和value,對於博客園的登陸是不成功。
3.本方法並不適合全部的網站,通常像博客園這種記住登陸狀態的纔會適合。
4.學習過程當中有遇到疑問的,能夠加QQ羣交流:631646987
ide
聽 說 看 了 這 個 號 可 以 幹 掉 領 導工具
· 猜你喜歡的文章 ·學習