Jmeter接口测试-对图片验证码的识别Jmeter接口测试-对验证码的识别
## 大概说一下思路,以及方法,我的接口接口的返回值是img/base64编码的,我采用的是OCR Server识别,获取返回值,图片保存到本地,再图片转码base64,之后携带数据请求OCR识别。(网上的办法是接口这种base64位的编码,可以直接请求OCR服务,我也试了试这个办法,请求时候,图片识别错误,就多了一步保存到本地)
1.获取接口数据(创建线程组- HTTP请求-输入IP地址、端口号、请求方式、路径、编码)
2.在HTTP请求下添加JSON提取器,提取imgUid、imgCode
中间采用“;”分号连接
3.接下来处理验证码,保存到本地,采用BeanShell后置处理
添加如下代码
点击查看代码
// 获取 Base64 编码字符串
String imageData = vars.get("imgcode");
// 判断并去掉前缀
if (imageData.startsWith("data:image/jpeg;base64,")) {imageData = imageData.substring("data:image/jpeg;base64,".length());
} else if (imageData.startsWith("data:image/jpg;base64,")) {imageData = imageData.substring("data:image/jpg;base64,".length());
}
// 现在 imageData 就是没有前缀的 Base64 字符串
// 继续进行解码等操作
import java.util.Base64;
import java.io.*;
byte[] data = Base64.getDecoder().decode(imageData);
// 保存文件
String fileName = "D://imgcode/code.jpg";
//保存的文件路径,可以自定义,换成你自己的
FileOutputStream out = new FileOutputStream(fileName);
out.write(data);
out.close();
// 设置文件路径变量
vars.put("file_name", fileName);
点击查看代码
import java.nio.file.Files
import java.nio.file.Paths
import java.util.Base64// 设置图片文件路径
String filePath = "D://imgcode/code.jpg" // 替换为你本地图片的路径
// 读取图片文件的字节数组
byte[] imageBytes = Files.readAllBytes(Paths.get(filePath))
// 将字节数组转换为 Base64 编码
String encodedImage = Base64.getEncoder().encodeToString(imageBytes)
// 输出 Base64 编码结果到 JMeter 变量
vars.put("encodedImage", encodedImage)
// 可选:打印 Base64 编码到 JMeter 日志
log.info("Encoded Image: " + encodedImage)