在项目中,我们经常碰到需要输入验证码才能登录成功。导致在自动化测试执行测试用例之前必须通过特殊手段将验证码设置为失效,才能通过测试。通过特殊手段绕过验证码需要重启服务,会对测试过程造成一定的干扰。
解决方案:
通过引入OCR识别模块解决验证码难题,流程如下图:
项目是通过接口返回base64编码在前端生成验证码的模式,所以无需保存图片可以直接将base64编码传入ocr识别模块完成识别。
市面常见的方案为之后从后台返回图片,也可以将图片转为base64编码后进行识别。
ocr识别:
ocr模块采用 python ddddocr 库。ddddocr奉行着开箱即用、最简依赖的理念,尽量减少用户的配置和使用成本。
ddddocr识别准确率能够达到95%以上,可以满足日常使用。经测试,常见的图形验证码,如下图。
实现代码:
from ddddocr import DdddOcr import base64 import requests def get_image_data(): url = '' response = requests.get(url).content return base64.b64encode(response) def get_verification_code(img_base64): return DdddOcr().classification(img_base64=img_base64) if __name__ == '__main__': img_b64 = get_image_data() v_code = get_verification_code(img_base64=img_b64)