方式一:ocrserver工具实现
注意:使用ocrserver工具时,在jmeter调用接口时,ocrserver工具要处于打开状态
操作步骤:
1. 下载ocrserver工具
百度一个下载地址即可。
2. 解压
下载下来的是个压缩包,直接解压即可使用
3. 双击文件夹中的OcrServer.exe,得到本机右下角显示的IP和端口号
IP和端口号是工具提供的,所以全网获取到的结果都是一样的
协议:http ip:127.0.0.1 端口:12349 请求方式:post
4.jmeter配置验证码接口
5. 保存获取验证码接口响应结果到本地
获取验证码接口下添加监听器->保存响应到文件,将接口响应结果保存到本地,结果为:
jmeter执行测试计划,接口响应成功后图片保存的结果。
6. 图片转换为base64格式
目的:提高网页响应速率。
步骤:线程组中添加JSR223 Sampler取样器,直接贴入代码将上步保存的图片转为Base64格式(注上步的图片保存的变量名为【cap】)
获取图片变量【cap】结果,将其转换为Base64格式的变量名【base64】输出
脚本为:
SampleResult.setIgnore();
import java.io.*;
import org.apache.commons.codec.binary.Base64;
// 取保存响应到文件中的验证码变量结果
String image=vars.get("cap");
byte[] data = null;
try {
InputStream in = new FileInputStream(image);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
Base64 base64=new Base64();
vars.put("base64",base64.encodeToString(data));
7.http请求调起OcrServer服务识别验证码结果
添加http请求,http请求中配置OcrServer服务的ip和端口号(协议:http ip:127.0.0.1 端口:12349 请求方式:post 参数在消息体数据中输入Base64的变量名称${base64} )
jmeter执行测试计划后此http请求的响应结果为JSON格式文本{"code":""},及提取此http请求的响应结果的code结果即为识别到的验证码结果。
8.JSON提取器提取验证码识别结果
调起OcrServer服务的http请求下配置JSON提取器提取识别到的验证码结果。
设置变量名为get_code,这个${get_code}即为识别到的验证码结果。
9. 比对获取的验证码和识别到的验证码
10. 验证jmeter中的变量是否有输出结果
例:上述操作中配置的变量cap、base64、get_code是否都有输出结果
jmeter中变量取值用${变量名}表示
① 使用线程组->取样器->Debug sampler(调试取样器),会直接显示出来所有的变量结果,结果在查看结果树中显示
Debug sampler(调试取样器)
jmeter执行测试计划后查看变量值。
② 配置http请求->请求名称为${变量名},执行jmeter的测试计划后在查看结果树中可见http请求名称的变量值结果。(注:http请求失败是因为ip和端口后没有配置)
将${变量名}作为HTTP请求的名称。
执行jmeter的测试计划后可在查看结果树中看到变量值结果。
11. jmeter调用ocrserver工具时,ocrserver工具必须为启动状态
否则会报错,工具调起不成功:
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理