自动化测试中6种常见验证码的处理方式

2023-12-17

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)-CSDN博客 文章浏览阅读1.8k次,点赞82次,收藏11次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块…… https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501

UI自动化测试时,需要对验证码进行识别处理,有很多方式,每种方式都有自己的特点,以下是一些常用处理方法,仅供参考。

01 去掉验证码

  • 从自动化的本质上来讲,主要是提升测试效率等,但是为了去研究验证码以及提升验证码的识别效率,是需要投入比较大的时间的;

  • 去掉验证码无疑是最简单的方式,而且对于开发而言这样做,工作量也不是很大;

  • 但是建议在测试环境使用,生产环境禁用,因为存在安全问题。

0 2 设置万能码

  • 这个是笔者刚开始做自动化时首选的一个处理方法;

  • 因为既测试到了验证码的功能,而且也不用投入太大的精力去研究如何进行验证码识别;

  • 另外对于开发来说,内置一个万能验证码也是非常简单的事情;

  • 对于写自动化脚本的人来说也是非常的方便,效率也高;

  • 但这个万能验证码仅限相关人员知道,避免存在安全隐患。

0 3 保留一个资源

  • 有点验证码实则就是图片资源;

  • 其实就是在制定的文件夹资源库中随机抽取一张,那么只需要将服务器上的所有图片删除,仅保留一张即可;

  • 说白了就相当于固定验证码。

0 4 光学字符识别

  • 其实就是通过Python-tesseract模块来只能识别图片中的验证码;

  • Python-tesseract是光学字符识别Tesseract OCR的python封装类;

  • 其能够读取大部分常规图片文件,比如JPG、GIF、PNG、TIFF等;

  • 这个笔者也尝试过,因为现在的图片验证码越来越复杂,其实有时候识别率并不高;

  • 下边我们尝试着使用一下。

4.1 识别对象

我们收集了几个图片验证码(来源于网络,仅供参考):从左到右依次是image01.jpg-image04.jpg:

4.2 pytesseract安装

  • 直接使用命令安装即可:

pip install pytesseract

4.3 Pillow安装

  • 直接使用命令:

pip install Pillow

4.4 OCR安装

  • 直接在官网下载即可:

OCR官网

https://github.com/UB-Mannheim/tesseract/wiki

  • 选择对应的版本下载即可:

  • 按照提示安装完成:

  • 配置环境变量,将其根目录添加到path环境变量中:

4.5 识别原理

  • 基本思路是通过图片降噪、图片切割等,输出图像文本;

  • 图片降噪就是将图片中一些不需要的信息去除,比如背景、干扰像素、干扰线等。

  • 如果验证码是彩色的背景,其实就是把每个像素放在五维空间,即X、Y、R、G、B;

  • X、Y是像素的二维平面坐标,RGB代表像素所对应的颜色。

4.6 处理过程

4.6.1 转灰度处理

  • 导入需要的包:

from PIL import Image
  • 打开需要分析的图像:

image = Image.open("./image01.jpg")
  • 将彩色图像转化为灰度图像(RGB转为HSI色彩空间),采用L分量:

# 彩色转灰度
img_01 = image.convert("L")
img_01.show()

以上完整代码为(使用image01.jpg):

# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/14
# 文件名称:test_tesseract.py
# 作用:OCR验证码识别
# 联系:VX

# 博客:https://blog.csdn.net/NoamaNelson

# 导入Image包
from PIL import Image

# 打开图像
image = Image.open("./image01.jpg")
# 彩色转灰度
img_01 = image.convert("L")
img_01.show()
  • 转灰度后图像如下:

4.6.2 二值化处理

  • 图像分割常用的方法就是二值化处理;

  • 二值化处理就是二值化图像时,将大于某个临界灰度值的像素灰度设置为灰度的极大值,把小于这个值的像素灰度设为灰度的极小值,取值范围一般为0-1;

  • 二值化算法不同,可分固定阈值和自适应阈值,比如这个固定阈值如下(使用image02.jpg):

# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/14
# 文件名称:test_tesseract.py
# 作用:OCR验证码识别
# 联系:VX
# 博客:https://blog.csdn.net/NoamaNelson

# 导入Image包
from PIL import Image

# 打开图像
image = Image.open("./image02.jpg")
# 二值化处理
img_02 = image.point(lambda x:0 if x<143 else 255)
img_02.show()
  • 二值化后的效果:

  • 我们结合前两种方法,把image03.jpg先灰度再二值化处理后输出对应的文字:

# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/14
# 文件名称:test_tesseract.py
# 作用:OCR验证码识别
# 联系:VX
# 博客:https://blog.csdn.net/NoamaNelson

# 导入Image包
from PIL import Image
from pytesseract import pytesseract

# 打开图像
image = Image.open("./image03.jpg")

# 灰度处理
img_new = image.convert("L")
# 二值化处理
img_03 = img_new.point(lambda x:0 if x<143 else 255)
img_03.show()
out_img = pytesseract.image_to_string(img_03)
print(out_img)
  • image03.jpg原图和处理后效果:

  • 结果输出:

4.6.3 图像增强

  • 为了排除更多的干扰,我们可以使用将图片增强显示,或者将图片转成黑白;

  • 我们在以上代码继续添加:

from PIL import ImageEnhance

img_enh = ImageEnhance.Contrast(img_03)
img_enh01 = img_enh.enhance(4)
img_enh01 .show()

out_img = pytesseract.image_to_string(img_enh01)

4.6.4 完整代码

  • 我们使用image04.jpg输出完整代码:

# 导入Image包
from PIL import Image
from pytesseract import pytesseract
from PIL import ImageEnhance

# 打开图像
image = Image.open("./image04.jpg")

# 灰度处理
img_new = image.convert("L")

# 二值化处理
img_04 = img_new.point(lambda x:0 if x<143 else 255)

# 图像增强
img_enh = ImageEnhance.Contrast(img_04)
img_enh01 = img_enh.enhance(4)

# 处理后图片
img_enh01.show()

# 提取图片文字
out_img = pytesseract.image_to_string(img_enh01)
print(out_img)
  • 处理前后的效果:

0 5 打码平台

  • 另外我们可以通过打码平台来实现图片文字提取,比如超人、图鉴、斐斐等等;

  • 比如图鉴平台,可以参考它的 开发文档

    (http://www.ttshitu.com/docs/index.html?spm=null);

06 记录cookie

  • 通过添加登录成功时所携带的cookie来跳过登录;

  • 在selenium中使用add_cookie()方法将用户名和密码等登录信息写入浏览器的cookie中,再次登录时直接读取浏览器cookie即可。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时, 请及时加入群: 786229024 ,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动化测试中6种常见验证码的处理方式 的相关文章

  • 软件测试|如何使用selenium处理iframe富文本输入框

    简介 在网页开发中 富文本框是常见的元素 用于输入富文本内容 如富文本编辑器或邮件编辑器 如果我们要使用Python和Selenium进行自动化测试或操作这种富文本框 可能会遇到一些挑战 本文将详细介绍如何使用Python和Selenium
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 测开和测试平台是否有存在的必要?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 软件测试中的白盒测试,这些技巧你知道吗?

    对于很多刚开始学习软件测试的小伙伴来说 如果能尽早将黑盒 白盒测试弄明白 掌握两种测试的结论和基本原理 将对自己后期的学习有较好的帮助 今天 我们就来聊聊黑盒 白盒测试的相关话题 1 黑盒测试的方法和小结 最常见黑盒测试方法包括 边界值 等
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • 甜蜜而简洁 —— 深入了解Pytest插件pytest-sugar

    在日常的软件开发中 测试是确保代码质量的关键步骤之一 然而 对于测试报告的生成和测试结果的可读性 一直以来都是开发者关注的焦点 Pytest插件 pytest sugar 以其清晰而美观的输出 为我们提供了一种愉悦的测试体验 本文将深入介绍
  • 2024诸多大厂春招提前启动!Android的程序员还在等什么

    春招 提前批 已开 xdm别打瞌睡了 格力 顺丰 酷狗 沃尔玛中国 理想 科大讯飞等开启春招 开始收简历了 还有hc的企业提前抢人 春招时间短 节奏快 招满即止 就算挂了也绝不能不投 对企业来说 秋招和春招都是储备人才的黄金时期 春招中 除
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 做好这几件事,30岁的你也能转行鸿蒙(HarmonyOS)?

    当你年过30 不管你愿不愿意承认 你的精力都在走下坡路 25岁熬一个通宵能写出来的代码 30岁有可能需要一整天 当然你也可以选择不拼精力和体力 当自身的一线经验积累到一定程度后 就会选择慢慢过渡到管理者的角色 通过经验分享及任务分配来参与项
  • 「优选算法刷题」:快乐数

    一 题目 编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 如果这个过程 结果为 1 那么这个
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到9月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • Web自动化测试 —— capability参数配置

    一 capability概述 capability是webdriver支持的标准命令之外的扩展命令 配置信息 配置web驱动属性 如浏览器名称 浏览器平台 结合selenium gird完成分布式 兼容性测试 官网地址 https www
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 20年通过校招进入广州某软件公司 干了接近3年的 功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了3年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • 一文从0到1手把手教学UI自动化测试之数据驱动!

    在UI的自动化测试中 我们需要把测试使用到的数据分离到文件中 如果单纯的写在我们的测试模块里面 不是一个好的设计 所以不管是什么类型的自动化测试 都是需要把数据分离出来的 当然分离到具体的文件里面 文件的形式其实有很多的 这里主要说明JSO
  • Airtest自动化测试工具

    一开始知道Airtest大概是在年初的时候 当时 看了一下官方的文档 大概是类似Sikuli的一个工具 主要用来做游戏自动化的 通过截图的方式用来解决游戏自动化测试的难题 最近 移动端测试的同事尝试用它的poco库来做自动化 看样子还不错
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!

    自动化关键数据记录 简介 关键数据记录是 Web 自动化测试中的关键部分 它们提供了关于系统行为和执行过程的详细信息 有助于验证用例的正确性 排查问题和确保应用程序的质量 行为日志 行为日志是一种用于记录系统或应用程序的操作和事件的技术 它

随机推荐

  • gcdef.dll文件缺失导致程序无法运行问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个gcdef d
  • GameUXLegacyGDFs.dll文件丢失导致程序无法运行问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个GameUXL
  • 计算机SSM毕设选题 农业商品信息管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 3 系统结构设计 4 项目获取
  • 华为OD机试真题-英文输入法-2023年OD统一考试(C卷)

    题目描述 主管期望你来实现英文输入法单词联想功能 需求如下 依据用户输入的单词前缀 从已输入的英文语句中联想出用户想输入的单词 按字典序输出联想到的单词序列 如果联想不到 请输出用户输入的单词前缀 注意 1 英文单词联想时 区分大小写 2
  • 外包干了3个月,技术退步明显。。。

    先说一下自己的情况 本科生生 19年通过校招进入广州某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • 【计算机网络概述】第一章:概论 1.3什么是网络核心

    学习目标 网络核心 电路交换 分组交换 电路交换与分组交换的区别 前言 上一篇文章学习了网络边缘 知道了主机和应用进程 端系统 是怎么接入网络核心中的 端系统的两种模式 客户端 服务器模式 对等模式 端系统中利用两种面向网络实施的服务 TC
  • 基于java中SSM框架和vue.js实现红酒网站演示【附项目源码】

    基于java中SSM框架和vue js实现红酒网站演示 JAVA简介 JAVA语言是目前软件市场上应用最广泛的语言开发程序 可以在多种平台上运用的 兼容性比较强 适应市面上大多数操作系统 不会出现乱码的现像 其扩展性和维护性都更好 具有分析
  • 车载以太网-DoIP

    文章目录 车载以太网DoIP协议 Diagnostics over Internet Protocol DoIP协议的报文格式 DoIP报文类型 DoIP协议的完整流程 车载以太网DoIP协议 Diagnostics over Intern
  • 题解 | #输出单向链表中倒数第k个结点#

    滴滴前端日常实习一面 字节跳动前端日常实习 一面 Cider秋招一二面 已拒 贝壳编程题题解 山东offer选择 求助 选择华为还是中电14所 写论文 写论文 华为 煞笔公司 华为待遇问题 已接offer 字节跳动飞书运营实习面经 华为 煞
  • 编写http接口api及接口自动化测试

    片言 此文中代码都是笔者工作中源码 所以不会很完整 主要摘常见场景的api片段用以举例说明 另 此文主要针对自动化测试人员 尤其有python基础阅读更佳 笔者使用 python3 6 postgresql10 flask 0 12 的环境
  • 题解 | #某宝店铺连续2天及以上购物的用户及其对应的天数#

    腾讯财经线暑期实习生面经 前女友突然在我的婚礼现场求复合怎么办 不妙了 好像自己真成小丑了 华为实习 提前批面试 池子里泡了一百多天了 发的一堆sp被鸽麻了 求求大家投下小米 HC还剩50 剩下不到半个月去哪招人呀 求求大家投下小米吧 发的
  • 2024最全java面试题及答案(600道)

    本文分为十九个模块 分别是 包括了 Java面试 Spring JVM MyBatis Redis MySQL 并发编程 微服务 Linux Springboot SpringCloud MQ Kafka 面试专题 如下图所示 共包含 20
  • 搭建Android自动化python+appium环境

    一 需要软件 JDK JAVA安装后配置JDK环境 SDK SDK下载后配置adb环境 Python pyhton语言 Pycharm python脚本编译工具 Appium python client pyhton中的库 Appium客户
  • C 语言教程:数据类型和格式说明符

    C 语言中的数据类型 C 中的变量必须是指定的 数据类型 并且您必须在 printf 函数中使用 格式说明符 来显示它 创建变量 int myNum 5 整数 没有小数点 float myFloatNum 5 99 浮点数 char myL
  • 题解 | #复制部分字符串#

    拒了华为 重回0 offer 目前在大三 寒假想找个实习 退役大学生 如题 uu们帮忙看看 25届 没有实习过 没有背过八股文 心里感觉很不稳 下学期想去暑期实习 uu们 德赛西威鸽 在中国电信公司工作一年后 我提桶跑路 东北辽宁就业求职好
  • 华为OD机试真题-求字符串中所有整数的最小和-2023年OD统一考试(C卷)

    题目描述 输入字符串s 输出s中包含所有整数的最小和 说明 1 字符串s 只包含 a z A Z 2 合法的整数包括 1 正整数 一个或者多个0 9组成 如 0 2 3 002 102 2 负整数 负号 开头 数字部分由一个或者多个0 9组
  • FXSXP32.dll文件丢失导致程序无法运行问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个FXSXP32
  • APP UI自动化测试思路总结

    首先想要说明一下 APP自动化测试可能很多公司不用 但也是大部分自动化测试工程师 高级测试工程师岗位招聘信息上要求的 所以为了更好的待遇 我们还是需要花时间去掌握的 毕竟谁也不会跟钱过不去 接下来 一起总结一下APP UI自动化测试的思路吧
  • Elasticsearch安装

    1 什么是ELK ELK是Elasticsearch Logstash Kibana三大开源框架首字母大写简称 市面上也被成为Elastic Stack 1 Elasticsearch 负责日志的检索和存储 2 Logstash 负责日志的
  • 自动化测试中6种常见验证码的处理方式

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读1 8k次 点赞82次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自