Jmeter如何识别验证码图片

发表于:2023-12-01 09:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:进阶的小胖子    来源:CSDN

  方式一: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),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号