当前位置: 首页 > news >正文

Jmeter对图片验证码的处理


对图片验证码的处理

在web端的登录接口经常会有图片验证码的输入,而且每次登录时图片验证码都是随机的;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段,然后再登录接口中使用;

通过jmeter对图片验证码的识别方法

1、通过ocrserver工具识别图片验证码;

如下图:解压后双击OcrServer.exe;然后电脑的右下角会显示该服务的IP和端口

在这里插入图片描述

在这里插入图片描述

2、在jmeter中发送获取该验证码图片的接口;如下图

在这里插入图片描述

3、在获取验证码图片的接口下面添加监听器》保存响应到文件;如下图:

在这里插入图片描述

4、再取样器中再添加JSR223 Sampler;注释一下该取样器是把图片转换成base64格式;并编写代码;如下图:

SampleResult.setIgnore();import java.io.*;
import org.apache.commons.codec.binary.Base64;String image=vars.get("png");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));
//return image;

在这里插入图片描述

5、在添加一个HTTP请求,用来调用OcrServer工具,IP地址为127.0.0.1,端口为12349,post请求,在body中引用base64;如下图:

在这里插入图片描述

6、在验证码识别请求下再添加一个json提取器;把识别到的图片验证码的字段提取出来;如下图:

识别图片验证码的字段为json格式;如下图

在这里插入图片描述

在json提取器中通过jsonpath方法提取出code的值

在这里插入图片描述

7、验证提取的字段是否和图片验证码上的字段一致;如下图:

在这里插入图片描述
在这里插入图片描述

8、通过第7步可以看到正确的提取出了验证码字段,然后在登录的接口调用image_code即可;

在这里插入图片描述

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

  • C++学习之路(十五)C++ 用Qt5实现一个工具箱(增加16进制颜色码转换和屏幕颜色提取功能)- 示例代码拆分讲解
  • 基于springboot+vue的点餐系统(前后端分离)
  • 【sql】【mysql】【数据库】复杂查询中避免Join的办法
  • Gavin Wood:财库保守主义偏离了初心,应探索 Fellowship 等更有效的资金部署机制
  • powershell获取微软o365 21v日志
  • 第六十四周周报
  • Android Studio新版UI介绍
  • 目标检测YOLO系列从入门到精通技术详解100篇-【自动驾驶】激光雷达
  • 户外电力检测设备,如何实现远程数据实时互通?
  • 【WP】Geek Challenge 2023 web 部分wp
  • Linux系统之centos7编译安装Python 3.8
  • RPG项目01_场景及人物动画管理器
  • arcgis投影栅格不可用
  • 【openGauss】如何通过pg_trigger.tgtype获取触发器的各种触发条件
  • geoserver 发布图层(tif、shp等)
  • 4个实用的微服务测试策略
  • HTTP中的ETag在移动客户端的应用
  • Javascript弹出层-初探
  • jquery cookie
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • pdf文件如何在线转换为jpg图片
  • redis学习笔记(三):列表、集合、有序集合
  • vue-router 实现分析
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • windows下mongoDB的环境配置
  • 初识 beanstalkd
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端攻城师
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)ssm码农论坛 毕业设计 231126
  • (简单) HDU 2612 Find a way,BFS。
  • (七)Knockout 创建自定义绑定
  • (三)c52学习之旅-点亮LED灯
  • (一)Linux+Windows下安装ffmpeg
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .Net - 类的介绍
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Core 项目指定SDK版本
  • .Net Web窗口页属性
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @Autowired和@Resource的区别
  • @ConfigurationProperties注解对数据的自动封装
  • [android] 看博客学习hashCode()和equals()