【软件测试: 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提取器提取

相关推荐
喜欢吃燃面几秒前
C++算法竞赛:位运算
开发语言·c++·学习·算法
传奇开心果编程1 分钟前
【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
python·学习·ui·前端框架·自动化
草莓熊Lotso3 分钟前
《详解 C++ Date 类的设计与实现:从运算符重载到功能测试》
开发语言·c++·经验分享·笔记·其他
谱写秋天10 分钟前
Qt 5.5 的安装与配置(使用 VSCode编辑)
开发语言·vscode·qt
项目申报小狂人12 分钟前
算法应用上新!自适应更新策略差分进化算法求解球形多飞行器路径规划问题,附完整MATLAB代码
开发语言·算法·matlab
王者鳜錸1 小时前
PYTHON让繁琐的工作自动化-PYTHON基础
python·microsoft·自动化
key_Go1 小时前
7.Ansible自动化之-实施任务控制
python·ansible·numpy
阿珊和她的猫4 小时前
v-scale-scree: 根据屏幕尺寸缩放内容
开发语言·前端·javascript
fouryears_234177 小时前
Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
开发语言·flutter·客户端·dart