自动化测试项目实战笔记(二):解决验证码识别问题

简介: 这篇文章介绍了三种自动化测试中验证码识别的方法:使用Python的pytesseract和PIL模块、利用第三方API如万维易源,以及使用开源的ddddocr库,还提到了一些注意事项,比如如何获取验证码区域的截图。

方法1

使用python模块处理,pytesseract和PIL模块解决不太复杂的验证码的问题。
tesseract 随便选择一个并在代码中指定

import pytesseract
pytesseract.pytesseract.tesseract_cmd = "D:\Software\Tesseract-OCR/tesseract.exe"
# # 使用pytesseract对英文进行识别,lang参数可省略
# code = pytesseract.image_to_string(Image.open(r'shijian.png'),lang="eng")
# print(code)
# # 使用pytesseract对中文(含英文,但识别率降低)进行识别
# code = pytesseract.image_to_string(Image.open(r'shuzi.jpg'),lang='chi_sim')
# print(code)
def test2(imgaddress="F:\python\protect\自动化测试\my_selemium_project\img_1.png"):
    image1 = Image.open(imgaddress)
    text = pytesseract.image_to_string(image1, lang="eng")
    print(text)

方法2

据AI图形识别的算法来实现的,直接通过使用第三方的API来实现,可使用的是名为:万维易源的API来解决验证码问题
网址是:https://www.showapi.com/

方法3

通过ddddocr实现验证码识别,这个效果不错,开源的,五行代码解决

def t2():
    ocr = ddddocr.DdddOcr()
    with open(r'F:\python\protect\自动化测试\my_selemium_project\2.jpg', 'rb') as f:
        img_bytes = f.read()
    res = ocr.classification(img_bytes)
    print(res)

在这里插入图片描述

注意事项

  • 如果遇到一直获取不到验证码区域,则可以考虑下面的方法
    ce = driver.find_element_by_id(id)
    # x,y 左顶点的坐标  w,h 高宽
    left = ce.location["x"]
    top = ce.location["y"]
    right = ce.size["width"] + left
    height = ce.size["height"] + top
    dpr = driver.execute_script("return window.devicePixelRatio")
    img = im.crop((left * dpr, top * dpr, right * dpr, height * dpr))
目录
相关文章
|
1月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
202 0
|
5月前
|
机器学习/深度学习 数据采集 API
Python自动化解决滑块验证码的最佳实践
Python自动化解决滑块验证码的最佳实践
|
2月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
92 0
|
11月前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
355 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
11月前
|
测试技术 数据安全/隐私保护 Python
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)
本文介绍了使用Selenium进行自动化测试时如何测试用户登录的不同情况,包括账号密码错误、登录成功以及处理登录时出现的弹框,并提供了相应的Python代码实现。
571 0
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
7月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
1189 5
|
11月前
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
272 2
|
11月前
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
104 1
|
资源调度 JavaScript API
nest.js + sms 实现短信验证码登录
本文介绍了在Nest.js框架中集成短信验证码登录的实现方案,详细阐述了使用阿里云短信服务的配置流程、资质申请、短信模板设置,并提供了API调用示例和工程代码的运行步骤。
nest.js + sms 实现短信验证码登录

热门文章

最新文章