pytest 识别登录时的验证码

在写自动化时,会遇到登录时需要设置验证码的问题,这时一般由两种方式:

方法一:请开发写一个万能验证码,直接登录即可;

方法一处理起来比较简单,不需要写代码处理,但是考虑到会有安全问题,部分项目无法适用,所以需要我们自己写代码读取并识别验证码。

方法二:写代码获取验证码,传入登录接口;

方法二主要是采用获取验证码图片+识别验证码,实现将验证码转换为字符串,传入登录接口即可。我这里的项目后端涉及到验证码base64转换,所以还会多一步解码过程。

环境配置

首先需要安装Tesseract-OCR、第三方库Pillow和pytesseract

安装Tesseract-OCR

下载地址:https://digi.bib.uni-mannheim.de/tesseract/
下载后直接安装,并配置环境变量

pytest 识别登录时的验证码
pytest 识别登录时的验证码

; 安装第三方库Pillow和pytesseract

pip3 install Pillow
pip3 install pytesseract
pip3 install tesseract

重启pycharm即可生效。

代码实现

pytest 识别登录时的验证码

总体思路如下:
获取base64加密的图片地址———>base64转换为图片——>图片写入文件——>识别验证码


from __future__ import print_function
from Common.handle_path import datas_dir
import base64
import requests
import pytesseract
from PIL import Image

"""获取登录页面base64加密验证码"""
url = "http://172.17.6.116:8001/api/user/kaptcha"
resp = requests.get(url)
im_base64_bytes = str.encode(resp.json()['data']['img'])
im_base64_to_image = base64.b64decode(im_base64_bytes)
with open(datas_dir + r'/yzm.png', 'wb') as f:
    f.write(im_base64_to_image)
    f.close()
im = Image.open(datas_dir + r'/yzm.png')
im.show()
text = pytesseract.image_to_string(im, lang='eng')
print(text)

运行结果与实际对比图如下:

pytest 识别登录时的验证码
代码识别的精确度有待提高,遇到比较复杂的可能读不准确甚至读不出来。。。后续再研究下怎么提高准确度吧

再附一个其他博主的代码,可参考学习,采取在页面获取图片xpath的方式完成,可供学习交流

from __future__ import print_function
from lxml import etree
import requests
import pytesseract
from PIL import Image
if __name__ == '__main__':

    url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
    page_text = requests.get(url=url).text

    tree = etree.HTML(page_text)
    cod_img_src = 'https://so.gushiwen.cn' + tree.xpath('//*[@id="imgCode"]/@src')[0]
    cod_data = requests.get(url=cod_img_src).content
    with open('./code.jpg', 'wb') as fp:
        fp.write(cod_data)
    text = pytesseract.image_to_string(Image.open(r'./code.jpg'))
    print(text)

参考:https://www.jianshu.com/p/2db541800418

Original: https://blog.csdn.net/weixin_43097562/article/details/122859356
Author: ~~麦小兜~~
Title: pytest 识别登录时的验证码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/772479/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 搭建自动化框架—pytest【更新中】

    文章内容介绍: 引言 说实在的,内容很长,快相当于出书了,这里是我自己搭建pytest自动化框架的整个过程,里面有踩过的坑,也走过弯路,也有用最简单粗暴的编码方式。不过总归是在不断…

    Python 2023年9月11日
    076
  • YOLOv7(目标检测)入门教程详解—检测,推理,训练

    目录 一.前言 二.yolov7源码下载 三.detect(检测) 四.Train(训练) 数据准备: labellmg: 配置训练的相关文件 配置数据集文件 正式训练: 推理: …

    Python 2023年11月5日
    035
  • 关于跳跃连接 卷积网络

    在训练深度神经网络时,模型的性能随着架构深度的增加而下降。这被称为退化问题。 网络深度的增加,模型的性能下降的原因可能是什么? a,过度拟合。随着深度的增加,模型往往会过度拟合 b…

    Python 2023年10月10日
    031
  • 模块五:font、freetype模块

    font模块主要用于获取字体Font对象,而freetyep模块是font模块的增强版本,保留了font模块的所有功能,并在font模块的基础之上增加了许多的功能。在pygame中…

    Python 2023年9月21日
    044
  • 数据分析实战<一>脑电(EEG)分析

    这两天需要对预实验的脑电进行一个分类,在这里记录一下流程 脑电分析系列文章mne官网mne教程随机森林分类Python 多因素方差分析 文章目录 1. 脑电数据的处理 * 1.1 …

    Python 2023年9月16日
    036
  • Pycharm终端出现PS问题、conda或activate不是内部命令问题..

    问题汇总 一、Pycharm终端出现PS,无法切换到当前虚拟环境 二、终端出现’conda/activate’ 不是内部或外部命令,也不是可运行的程序 或批…

    Python 2023年9月7日
    0113
  • pandas数据分析给力教程【完整版】(七)

    Series和DataFrame都有一个用于生成各类图表的plot方法。默认情况下,它们所生成的是线形图 线形图 简单的Series图表示例,plot() import numpy…

    Python 2023年9月5日
    049
  • Pandas常见方法(2)-pandas对数据的预处理

    说明:本blog基于python3, pandas 1.3.5版本 本文主要介绍如何对数据做预处理,包括 缺失值过滤、缺失值补全、数据转换(重复值删除,数据映射、数据替换)、简单运…

    Python 2023年8月6日
    031
  • pytest框架快速入门一

    时间好快啊,转眼间2021年了hhhhh,虽然是元旦假期但学习的心一点都不能松懈啊,今天向大家先简单的介绍一下pytest框架的一些特性,其实呢就博主个人认为作为一名自动化测试工程…

    Python 2023年9月14日
    074
  • Python测试框架pytest入门基础

    Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better …

    Python 2023年9月10日
    033
  • Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)

    导语 “慢品人间烟火色 闲观人间岁月长” 🌙 遇见我以后,我们的故事就开始了,愿你历经山河,仍觉得人间值得🌙。 ​ 星光月夜烟花皆归你,我也归你。关于烟花🎇…

    Python 2023年7月31日
    0101
  • 基于YOLOV5的FPS类游戏检测auto aim

    Github地址:github 简介 本项目基于yolov5,实现了一款FPS类游戏的检测,旨在使用现有网络结构实现一个完整的落地项目,…

    Python 2023年9月30日
    053
  • python读取xml

    python读取xml 原创 wx5e6caa8b9792d2022-08-01 15:39:12博主文章分类:Python高级编程 ©著作权 文章标签 xml 子节点 文章分类 …

    Python 2023年5月24日
    086
  • 从零开始打造云端AI管理调度平台(七)内容库的设计_2

    最近闲来无事,想着把自己工作正在做的一个项目做一个简单的分享与实战教程,该项目不困难但是由于涉及要素过多所以比较复杂。所以这里分享出来也是为了帮助新手小白能在实战当中快速了解pyt…

    Python 2023年8月6日
    046
  • 22.FastAPI开发大型应用

    在前面的代码示例中,我们都是在一个文件创建路由;在实际开发中,一般会根据需求进行模块划分,代码项目中也会根据模块进行开发,不同的模块采用不同的文件来编写程序。在FastAPI中提供…

    Python 2023年8月10日
    036
  • Flask-MDict搭建在线Mdict词典服务

    根据昨天发布的『 告杨浦居民书(二十六)』,新一轮的核酸开始了。 本文是应网友 司徒 的要求折腾的 什么是 MDict ? MDict …

    Python 2023年8月12日
    069
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球