Jmeter日常使用-调用python3脚本进行验证码识别,包括批量并发
题记:
上一篇文章说到通过监听器--保存响应到文件 把图片存储到本地,
本文记录通过python3脚本对图片进行验证码识别
前言:
Jmeter通过安装插件JSR223 Sampler可以支持python脚本编写,只支持python2.7,目前2.X版本已不维护,主流都是3.X以上,所以JSR223 Sampler在日常很多第三方库都不方便
1. 前期准备:
1 2 3 4 5 | python3.7 ddddocr(第三方验证码识别库) Jmeter 5.1 |
2. 编写python脚本:
实现对上一个文章的验证码识别:https://www.cnblogs.com/shoebill/p/15910975.html
1 2 3 4 5 6 7 8 9 10 11 | 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脚本进行引用读取:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
2021-02-21 Jmeter---if controller 使用
2021-02-21 Jmeter 官方在线文档&Android SDK 官方下载地址