【软件测试: jmeter工具】OS进程取样器调用python

在jmeter中有时候需要调用自定义函数进行加密、解密等拓展功能

本文通过识别验证码处理登录验证码为例,通过OS进程取样器,调用python函数实现

识别验证码的python函数源码

Python 复制代码
import base64
from io import BytesIO
from PIL import Image
import sys
import ddddocr

def Save_captcha_picture(b64_code):
    image_base64 = b64_code
    # 对base64字符串进行解码
    image_data = base64.b64decode(image_base64)

    # 使用BytesIO创建一个可读的字节流
    image_stream = BytesIO(image_data)

    # 使用PIL打开字节流中的图片
    image = Image.open(image_stream)

    # 保存图片到文件系统
    image.save("captcha.png", 'PNG')  # 保存为PNG格式,你也可以根据需要选择其他格式


# 识别验证码
def captcha_code_recognition_func(img):
    """
    识别验证码的函数
    :param img: 图片
    :return: 验证码字符串
    """

    # 创建DdddOcr对象,show_ad=False可以关闭启动时的广告
    ocr = ddddocr.DdddOcr(show_ad=False)
    # 打开验证码图片文件并读取
    with open(img, 'rb') as f:
        img_bytes = f.read()  # 读取图片文件的字节数据
    # 使用classification方法进行验证码识别
    res = ocr.classification(img_bytes)

    # 打印识别结果
    print({"CaptchaValue": res})
    # return res

if __name__ == '__main__':
    Save_captcha_picture(sys.argv[1])
    captcha_code_recognition_func("captcha.png")

举例的图片是通过base64编码返回的, 所以

  • 第一步通Save_captcha_picture()函数将Base64编码转换为图片,保存到本地

  • 通过captcha_code_recognition_func() 识别图片中的验证码, 通过ddddocr库进行识别

  • sys.argv[1]: 接收命令行调用时的参数

将上述代码写入python文件

直接调用python文件

  • 命令: 直接使用python, 本地已经安装了python环境

  • 工作目录: 配置python文件的文件目录,注意:此处可以包含中文路径

  • 命令行参数: 传递的第一个参数为python文件的名称, 传递的第二个参数为python文件执行时要传的参数,如果有第二个参数,继续增加参数

实际的执行命令效果是 python py文件 参数1

执行结果

识别出的验证码

结果可通过json提取器提取

通过.bat文件调用

第一步:创建一个 test.bat文件,指定执行py文件的命令

Python 复制代码
python C:\Users\74212\Desktop\temp\test\Base64_img.py %1 

配置OS进程取样器

  • 命令: 制定要运行的bat文件

  • 命令行参数: 传递参数, 替换bat 文件中的 %1

执行结果

通过正则表达式提取值

输出值的提取

在函数中,将最后的结果通过print()打印出来,可以在os提取器的响应界面进行展示

将展示的结果通过正则提取器或者json提取器,可以提取出变量

正则表达式提取

json提取器提取

相关推荐
我的ID配享太庙呀13 分钟前
Django 科普介绍:从入门到了解其核心魅力
数据库·后端·python·mysql·django·sqlite
java叶新东老师1 小时前
goland编写go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案
开发语言·后端·golang
@蓝莓果粒茶1 小时前
LeetCode第350题_两个数组的交集II
c++·python·学习·算法·leetcode·职场和发展·c#
FinAnalyzer1 小时前
如何在 InsCodeAI 上搭建并使用 Jupyter Notebook 环境?
ide·python·jupyter
java1234_小锋1 小时前
【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博文章数据可视化分析-文章分类下拉框实现
python·自然语言处理·flask
檀越剑指大厂1 小时前
【Python系列】Flask 应用中的主动垃圾回收
开发语言·python·flask
檀越剑指大厂1 小时前
【Python系列】使用 memory_profiler 诊断 Flask 应用内存问题
开发语言·python·flask
笠码1 小时前
JVM Java虚拟机
java·开发语言·jvm·垃圾回收
WXX_s2 小时前
【OpenCV篇】OpenCV——03day.图像预处理(2)
人工智能·python·opencv·学习·计算机视觉
橙小花2 小时前
C语言:指针、变量指针与指针变量、数组指针与指针数组
c语言·开发语言