Selenium+Java自動化之如何優雅繞過驗證碼

Selenium+Java自動化之如何優雅繞過驗證碼java

Selenium+Java自動化之如何優雅繞過驗證碼

走心原創第15期
Selenium+Java自動化之如何優雅繞過驗證碼chrome

前言

驗證碼問題對於每一個ui自動化的同窗而言,相信都是個蛋疼的問題,對於驗證碼的處理我我的不提倡破解,不要去想破解方法,這個驗證碼原本就是爲了防止別人自動化登陸的。若是大家公司的驗證碼很容易被你破解了,那麼只能說大家公司驗證碼級別不高,去建議開發提升驗證碼級別了。
對於驗證碼,要麼是讓開發把驗證碼寫死(傳說中的萬能驗證碼),如:1234,要麼就是低調的儘可能繞過去。
下面本文來介紹下如何繞過下圖驗證碼,進入博客園
Selenium+Java自動化之如何優雅繞過驗證碼
工具
Fiddler.exe
IDEA/Eclipse
selenium的cookie操做
1、使用Fiddler抓包
1.通常登錄網站成功後,會生成一個已登陸狀態的cookie,那麼只須要直接把這個值拿到,用selenium進行addCookie操做便可。
2.能夠先手動登陸一次,而後抓取這個cookie,這裏咱們就須要用抓包工具fiddler了
3.先打開博客園登陸界面,手動輸入帳號和密碼(不要點登陸按鈕)
Selenium+Java自動化之如何優雅繞過驗證碼
4.打開fiddler抓包工具,此時再點博客園登陸按鈕
Selenium+Java自動化之如何優雅繞過驗證碼
5.登陸成功後,再查看cookie變化,發現多了兩組參數,多的這兩組參數就是咱們想要的,copy出來,一會有用
Selenium+Java自動化之如何優雅繞過驗證碼
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();
    }
}

效果圖:
Selenium+Java自動化之如何優雅繞過驗證碼
視頻效果以下:cookie

有幾點須要注意:
1.登陸時候要勾選下次自動登陸按鈕。
2.addCookie()只添加name和value,對於博客園的登陸是不成功。
3.本方法並不適合全部的網站,通常像博客園這種記住登陸狀態的纔會適合。
4.學習過程當中有遇到疑問的,能夠加QQ羣交流:631646987
Selenium+Java自動化之如何優雅繞過驗證碼ide

  • End -
    做者:腦洞大大的吃貨獅子座,喜歡專研技術,勤於總結概括,用文字結交朋友,擅長與生活相愛相殺,樂於分享的一個技術狂人。
    軟 件 測 試 君
    Selenium+Java自動化之如何優雅繞過驗證碼

聽 說 看 了 這 個 號 可 以 幹 掉 領 導工具

· 猜你喜歡的文章 ·學習

相關文章
相關標籤/搜索