自动生成批量验证码用于RPA组件测试的方法

许多人工智能和RPA公司致力于开发能够识别验证码的组件,以便在自动化操作中处理通过网页和App弹出的验证码验证,从而完成后续的自动化流程。作为从事人工智能行业的专业人士,在测试过程中通常需要搜集大量验证码素材,以评估验证码组件的功能和通过率。

这一过程需要获取大量验证码图片,而在网络上搜集到的素材往往并不充足。作者花费了半小时的时间仅找到了约7张验证码图片,因此决定放弃这种方式,转而使用Python代码进行批量生成。

通过实在设计器中的"AIGC"目录下的"AI生成文本"组件,输入提示语

生成50张数字验证码, 验证码的值显示在文件名里面, 要有一些干扰元素 数字是4位的  保存到 C:\Users\EDY\Downloads\generated_codes验证码占满图片 数字加大  加粗  加颜色  

    实在设计器“AI生成文本”组件如下:(剩余次数50000多次,对于普通使用已经不少了,如果不够可以再购买次数)

代码很快就生成了

from PIL import Image, ImageDraw, ImageFont
import os
import random# 生成验证码的数量
num_codes = 50# 验证码位数
code_length = 4# 保存路径
save_path = r'C:\Users\EDY\Downloads\generated_codes'# 创建保存路径
if not os.path.exists(save_path):os.makedirs(save_path)# 随机生成数字验证码
def generate_code(length):return ''.join(random.choices('0123456789', k=length))# 创建验证码图片
def create_code_image(code):image_size = (150, 60)  # 图片大小增加background_color = (255, 255, 255)  # 背景颜色image = Image.new('RGB', image_size, background_color)draw = ImageDraw.Draw(image)# 使用TrueType字体文件,设置字体大小、颜色和粗细font_size = 40font = ImageFont.truetype("arial.ttf", font_size)font_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))font_bold = "arialbd.ttf"  # 替换成你喜欢的粗体字体文件路径# 计算文字位置居中text_bbox = draw.textbbox((0, 0), code, font=font)x = (image_size[0] - text_bbox[2]) // 2y = (image_size[1] - text_bbox[3]) // 2# 添加文字到图片draw.text((x, y), code, font=font, fill=font_color)return image# 生成并保存验证码图片
for i in range(num_codes):code = generate_code(code_length)image = create_code_image(code)# 添加一些干扰元素,可以根据需求修改# 例如,添加随机直线(减少了添加直线的次数)for _ in range(2):draw = ImageDraw.Draw(image)x1, y1 = random.randint(0, 150), random.randint(0, 60)x2, y2 = random.randint(0, 150), random.randint(0, 60)draw.line([(x1, y1), (x2, y2)], fill=(0, 0, 0), width=1)# 保存图片file_name = f"{code}.png"file_path = os.path.join(save_path, file_name)image.save(file_path)print(f"{num_codes} 个验证码已生成并保存到 {save_path}")
from PIL import Image, ImageDraw, ImageFont
import os
import random# 生成验证码的数量
num_codes = 50# 验证码位数
code_length = 4# 保存路径
save_path = r'C:\Users\EDY\Downloads\generated_codes'# 创建保存路径
if not os.path.exists(save_path):os.makedirs(save_path)# 随机生成数字验证码
def generate_code(length):return ''.join(random.choices('0123456789', k=length))# 创建验证码图片
def create_code_image(code):image_size = (150, 60)  # 图片大小增加background_color = (255, 255, 255)  # 背景颜色image = Image.new('RGB', image_size, background_color)draw = ImageDraw.Draw(image)# 使用TrueType字体文件,设置字体大小、颜色和粗细font_size = 40font = ImageFont.truetype("arial.ttf", font_size)font_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))font_bold = "arialbd.ttf"  # 替换成你喜欢的粗体字体文件路径# 计算文字位置居中text_bbox = draw.textbbox((0, 0), code, font=font)x = (image_size[0] - text_bbox[2]) // 2y = (image_size[1] - text_bbox[3]) // 2# 添加文字到图片draw.text((x, y), code, font=font, fill=font_color)return image# 生成并保存验证码图片
for i in range(num_codes):code = generate_code(code_length)image = create_code_image(code)# 添加一些干扰元素,可以根据需求修改# 例如,添加随机直线(减少了添加直线的次数)for _ in range(2):draw = ImageDraw.Draw(image)x1, y1 = random.randint(0, 150), random.randint(0, 60)x2, y2 = random.randint(0, 150), random.randint(0, 60)draw.line([(x1, y1), (x2, y2)], fill=(0, 0, 0), width=1)# 保存图片file_name = f"{code}.png"file_path = os.path.join(save_path, file_name)image.save(file_path)print(f"{num_codes} 个验证码已生成并保存到 {save_path}")

查看输出结果,测试用的验证码已生成成功

附件下载:

接着生成批量测试组件的代码,通过查看源代码获取验证码组件源代码:

源代码(等会用到):

改造脚本:

import os# 文件夹路径
folder_path = r'C:\path\to\your\image\folder'
save_path = r'C:\Users\EDY\Downloads\generated_codes'# 确保保存路径存在
if not os.path.exists(save_path):os.makedirs(save_path)# 遍历文件夹
for filename in os.listdir(folder_path):# 构建完整的文件路径pic_path = os.path.join(folder_path, filename)# 检查是否为图片文件if os.path.isfile(pic_path) and pic_path.lower().endswith(('.png', '.jpg', '.jpeg')):# 使用OCR进行识别captcha = OCR.SourceCommonEnglishNumbersCodeV1(SZEnv['rpa'], "纯数字", 1, "", pic_path, None, 2, var_ret=0, skip_err=0, delay_before_new=0, delay_after_new=0, timeout_new=30)# 打印图片文件路径和识别结果print(f"图片文件路径: {pic_path} 识别结果: {captcha}")

 运行脚本:

样本与测试结果

测试结论

文件名: 0014.png, 验证码: 0014

通过

文件名: 0160.png, 验证码: 0160

通过

文件名: 0232.png, 验证码: 0232

通过

文件名: 0300.png, 验证码: 0300

通过

文件名: 0476.png, 验证码: 0476

通过

文件名: 0495.png, 验证码: 0495

通过

文件名: 3353.png, 验证码: 3353

通过

文件名: 3397.png, 验证码: 3397

通过

文件名: 3501.png, 验证码: 3501

通过

文件名: 3563.png, 验证码: 3563

通过

文件名: 3571.png, 验证码: 3571

通过

文件名: 3630.png, 验证码: 3630

通过

文件名: 3858.png, 验证码: 3858

通过

文件名: 3881.png, 验证码: 3881

通过

文件名: 3894.png, 验证码: 3894

通过

文件名: 3963.png, 验证码: 3963

通过

文件名: 4308.png, 验证码: 4308

通过

文件名: 4342.png, 验证码: 4342

通过

文件名: 4432.png, 验证码: 4432

通过

实际测试了500多条,测试完成。 

这个例子展示了如何用实在设计器调用"AIGC生成文本"组件批量生成验证码,再用这些验证码,批量测试实在设计器组件。相比于手动测试,效率提高了几百倍。

总结:

  1. 对于像验证码这样的测试素材,寻找起来相当费时,而且数量有限。因此,采用使用Python代码生成的方式更为便捷。

  2. 通过实在设计器调用"AIGC生成文本"组件,能够轻松生成所需的代码。

  3. 使用脚本进行测试相较于手动测试,效率提高了数百倍。由于代码生成的门槛降低,一般用户也能够轻松使用代码进行测试。

  4. 实在设计器提供的剩余次数已超过50000次,对于一般使用而言已经十分充裕,若仍不够,可考虑购买额外次数。

  5. 对于其他需要进行批量测试的场景,本文的思路同样值得借鉴。

最后,实在RPA设计器下载链接如下,想要尝试的小伙伴可以免费下载社区版试用:

下载实在RPA设计器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/238481.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习记录——삼십팔 网络层IP协议

文章目录 1、了解IP协议2、IP协议报文1、8位服务类型2、16位总长度(字节数)3、8位生存时间(TTL) 3、网段划分1、网段划分和CIDR方案2、子网划分简单方法3、IP地址问题的解决方案 4、公网内网1、内网分配2、运营商管理方法 5、路由…

C++力扣题目669--修剪二叉搜索树

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。…

Uncaught ReferenceError: videojs is not defined

项目场景: 项目背景: 开发 vue 项目时,调试时浏览器前端控制台 出现红色 报错信息: Uncaught ReferenceError: videojs is not defined 问题描述 遇到的问题: 开发 vue 项目时, 浏览器控制台出现如下所…

【Linux】shell 脚本入门详解

一、shell入门简介 1.1什么是shell # 什么是shell网上有很多shell的概念介绍,其实都很官方化,如果你对linux命令很熟悉,那么编写shell就不是一个难事,shell本质上是linux命令,一条一条命令组合在一起,实现…

如何通过内网穿透实现公网访问Portainer管理监控Docker容器

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风…

Win10专业版系统搭建DNS解析服务

Win10专业版 纯新手,也没弄过Linux的。不喜勿喷,有问题请指出 第一天一头雾水整了几个小时没结果,第二天豁然开朗,10分钟明白了第一天的问题所在。 Win10 安卓: iOS: 搭建DNS服务器的意义: 屏蔽…

MyBatis-Plus 入门指南:安装与配置、代码生成、综合案例、主键生成策略、自动填充

目录 1.MyBatis-Plus介绍 1.1.简介 1.2.特性 1.3.结构 1.4.支持数据库 2.快速开始 3.安装与配置 4.代码生成 5.综合案例 5.1.主键生成策略 5.2.自动填充 1.MyBatis-Plus介绍 1.1.简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具&…

写点东西《 Kickstart:搭建 JS 项目的最快方式!》

写点东西《🚀 Kickstart:搭建 JS 项目的最快方式!》 如何使用它? 想象一下:你刚刚有一个新的项目创意,你对创意充满热情,并准备好编码。 但是,在实际编写代码之前,您必须…

解决jmeter响应乱码的问题

HTTP请求响应乱码 方法一:添加后置处理器BeanShell PostProcessor,写入【prev.setDataEncoding("utf-8")】 方法二:修改bin目录下的配置文件jmeter.properties,将配置修改为【sampleresult.default.encodingUTF-8】 J…

2024年如何成为技术创作KOL?| 分享抽龙年公仔

引言 2024 年已经到来,你年初的 Flag 立好了吗?今年要创作多少篇文章?要如何获得更大的影响力?如何通过创作来改变自己的职业轨道?你有没有想过,其实成为技术创作领域的一位 KOL,离你并不遥远&a…

2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑤

单元测试 一、任务要求 题目1:根据下列流程图编写程序实现相应处理,执行j10*x-y返回文字“j1:”和计算值,执行j(x-y)*(10⁵%7)返回文字“j2:”和计算值,执行jy*log(x10)返回文字“j3:”和计算值…

通义千问AI挑战赛赛后反思

个人理解: 初赛阶段主要聚焦在如何通过 SFT 提升基础模型的代码能力,需要选手基于最新开源的 Qwen 1.8 模型作为基础模型,上分的关键主要通过收集高质量的代码数据提升模型的在Python, JavaScript, Java, Go, C, Rust六种编程语言的代码生成…

若依框架实现排序【升序或降序】很简单

前端实现 1. 在表格上加监听函数sort-change。如下红框所示: 2. 在表行上加排序字:sort-orders,可排序字sortable。如下红框所示: 3. 添加监听函数实现。代码如下: handleSortChange(column) {this.queryParams.orderByColumn …

使用emu8086实现——循环结构程序设计

一、实验目的 1.掌握循环结构程序设计的方法; 2.掌握数据块传送程序设计的方法; 3.掌握串传送指令的应用。 二、实验内容 1、计算S12*33*4...N*(N1),直到N*(N1)项大于200为止。编写程序,计算上式的结果。 代码及注释&#…

考研经验总结——目录

文章目录 一、写作顺序二、个人情况说明三、读评论四、一些小牢骚五、一些注意事项(持续更新) 一、写作顺序 我将准备从三个阶段开始介绍吧 考研前考研中考研后(也就是现在我的这种情况) 考研前我会分为:数学、专业…

国图公考:2024山东省事业单位发布招聘公告

更多信息可以登录山东人事考试信息查看!

webpack执行流程知识点总结

webpack的运行流程 Webpack 的运行流程是一个串行的过程,从启动到结束会依次执行以下流程: 在以上过程中,Webpack 会在特定的时间点广播出特定的事件,插件在监听到感兴趣的事件后会执行特定的逻辑,并且插件可以调用 We…

艾瑞报告:HR数字化需关注体系化能力,红海云等标杆厂商引领一体化趋势

新全球化时代背景下,企业经营所面临的国内外环境的不确定性增强,如何从不确定性中找到确定性成了大多数企业的关注要点。近日,艾瑞咨询发布《2023中国人力资源数字化研究报告》,从数字化转型的角度切入,探讨数字化如何…

原型设计工具Axure RP结合内网穿透实现本地web页面公网访问协同办公

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

进阶Docker3:Dokerfile构建镜像

目录 Dockerfile 构建基础镜像 基本机构 命令: 命令解释: 准备工作 创建镜像 上传镜像 Dockerfile Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使 用Docke…