Jmeter日常使用-調用python3腳本進行驗證碼識別,包括批量並發


 題記:

上一篇文章說到通過監聽器--保存響應到文件 把圖片存儲到本地,

本文記錄通過python3腳本對圖片進行驗證碼識別

 

前言:

Jmeter通過安裝插件JSR223 Sampler可以支持python腳本編寫,只支持python2.7,目前2.X版本已不維護,主流都是3.X以上,所以JSR223 Sampler在日常很多第三方庫都不方便

 

1. 前期准備:

python3.7

ddddocr(第三方驗證碼識別庫)

Jmeter 5.1

 

2. 編寫python腳本:

實現對上一個文章的驗證碼識別:https://www.cnblogs.com/shoebill/p/15910975.html

import ddddocr

def picOcr():
    ocr = ddddocr.DdddOcr()
    with open(fr"E:\jmtest\test1.gif","rb") as f:
        img_bytes = f.read()
    res = ocr.classification(img_bytes)
    print(res) #一定要有打印才能獲取到

if __name__ == '__main__':
    picOcr()

 3. Jmeter通過BeanShell Sampler,對python腳本進行引用讀取:

import java.io.BufferedReader;
import java.io.InputStreamReader;
 
String command = "cmd /c D:\\XXX\\python\\XXXX\\envs\\20220124\\python.exe E:\\XXXX\\practice\\test0124.py"; #通過的是虛擬環境,本機直接用 python,通過命令執行本地的腳本,如果需要傳參可以在末尾:-t ${XXX}
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);

pr.waitFor();
 
BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = "";
StringBuilder response = new StringBuilder();
while ((line = b.readLine()) != null) {
    response.append(line);
 
}
 
String response_data = response.toString();
 
System.out.println(response_data);
b.close();
//System.out.println(response.toString());
vars.put("code",response.toString()); //把結果賦值給變量 ,方便后面調用

 

4. 結果:

 

 

5.實現驗證碼圖片參數化,把驗證碼圖片傳到python腳本,並發驗證

 第一步:先要修改python腳本,通過命令運行方向接收參數:

 

 

第二步修改Jmeter腳本:

 

1.定義保存驗證碼的圖片變量名,用於后續傳參;

2.保存文件路徑要用“/”,因為python不支持"\"需要轉義

3.修改BeanShell Sampler 腳本引用:

 

 

 

 

執行結果:

 

 

 

 

參考文獻:https://www.freesion.com/article/4341750544/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM