先把別人的解決方法粘貼過來,就是還沒有琢磨出來,如果有哪位大神會處理驗證碼,求指教~
1.首先網上找各種解決方法,看看大神們都是怎樣搞定的驗證碼登錄的,別說,還真讓我找到了,一看大神17年發布的,不禁感嘆了下,大神就是大神啊!網上大神鏈接如下
https://www.cnblogs.com/qzsong0214/p/6907075.html
大家先看評論啊,大佬為了我們這群菜鳥也是用心良苦,生生沒貼源碼,苦了我們這些菜鳥,繼續往下翻你會看到有人貼了源碼,沒錯這個人就是我,最后還是要謝謝大佬提供的思路!
2.要准備的東西:Jmeter 大家應該都有,需要准備的其實就是下面這個東東,網址:https://sourceforge.net/projects/tess4j/,這個網址真的很不錯,建議大家收藏!
3.完事具備后,接下來我們要把tess4j里的jar包全扔到Jmeter的lib文件夾下,其實只需要幾個jar包就夠,但是時間有限,技術有限就不去找具體要那幾個,全扔過去省事,閉着眼睛扔就對了!
4.配置jmeter
4.1打開jmeter,在測試計划下添加線程組
4.2添加獲取驗證碼的采樣器
4.3新建一個監聽器
4.4新建一個用戶自定義變量,用於存解析出來的驗證碼的值
備注:新建一個存驗證碼的變量regCode,為了判斷是否已解析出驗證碼,設定一個默認值-1
4.5給獲取驗證碼的采樣器加一個后置處理器BeanShell PosProcessor,用於解析驗證碼的值,並將其存入上一步的用戶變量中
Bean Shell源碼如下(大神源碼):
import java.io.*;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
String imgPath="D://yanzhengma.jpg";//將驗證碼保存到本地文件中
byte[] responseBody = prev.getResponseData();
File imageFile = new File(imgPath);
OutputStream out = new FileOutputStream(imageFile);
out.write(responseBody);
out.flush();
out.close();
File imageFile1 = new File(imgPath);//讀取圖片數字
ITesseract instance = new Tesseract();
instance.setDatapath("C:\\Users\\dfitc_lgx\\Desktop\\xiagao\\Tess4J\\tessdata"); //Tess4j 文件里的 tessdata 目錄下
instance.setLanguage("eng");//英文庫識別數字比較准確
content = instance.doOCR(imageFile1).replace("\n", "");
vars.put("aaaaaa",content);
4.6在采集器上新建一個后置處理器Debug PostProcessor,便於調試
4.7驗證之前的設置是否正確,啟用jmeter的壓力測試,在查看結果樹的菜單下,可以看到運行的結果。
注意:我用的這個驗證碼,背景有干擾,所以識別出來的驗證碼有偏差,理應對存在本地的圖片做一下降噪處理的,這留着以后研究吧。