web自动化测试计算型验证码识别分享

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

之前分享过ddddocr库,并附带演示了识别纯数字验证码的案例

有很多同学过来问我计算型的验证码怎么识别,

比如像这样的

演示项目地址:

http://vue.ruoyi.vip/login?redirect=%2Findex

先说思路:

如果仍然采用上次介绍的ddddocr库识别图片中的文字,识别出来后我们截取前面的3个字符“4/2”然后进行计算即可,

思路挺简单的,实现起来还是有点麻烦,最主要的原因是这个图片不是正常的字体,弯弯拐拐的,识别错误率很高。

遇到的坑:

  • 识别出来不足3个字符,无法计算

  • 第二个字符识别出来不是运算符,无法计算

  • 第一个和第三个字符识别出来的数字不正确,导致计算结果不对,验证失败

  • python除法运算得到的结果是浮点型,需要转成整型,这个验证码只能输入整数才能通过,比如4/2,python会得到2.0而不是2,导致验证失败

处理后,代码实现:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from ddddocr import DdddOcr

driver = webdriver.Chrome()
driver.get('http://vue.ruoyi.vip/login?redirect=%2Findex')
driver.implicitly_wait(5)

while True:
    ele = driver.find_element(by=By.XPATH, value='//*[@id="app"]/div[1]/form/div[3]/div/div[2]/img')
    png = ele.screenshot_as_png
    text = DdddOcr(show_ad=False).classification(png)
    # 判断识别出来的字符串长度大于2
    if len(text) > 2:
        # 截取前3个字符
        exp_str = text[:3]
        # 判断如果是“数字 运算符 数字”格式的字符串
        if exp_str[0].isdigit() and (exp_str[1] in ["+", "-", "*", "/"]) and exp_str[2].isdigit():
            # 除法返回结果是float类型,比如 4/2=2.0 要转成2才能通过验证
            result = int(eval(exp_str))
            ele_verify = driver.find_element(by=By.XPATH, value='//*[@id="app"]/div[1]/form/div[3]/div/div[1]/input')
            ele_verify.clear()
            ele_verify.send_keys(result)
            driver.find_element(by=By.XPATH, value='//*[@id="app"]/div[1]/form/div[4]/div/button').click()
            time.sleep(2)

            # 判断是否登录成功进入首页,没有进入就继续识别验证码
            if 'https://vue.ruoyi.vip/index' == driver.current_url:
                break

        else:
            # 如果不是“数字 运算符 数字”格式的字符串,继续点击更换验证码识别
            ele.click()
    else:
        # 识别长度不足3位,继续点击更换验证码识别
        ele.click()

print('登录成功')

识别效果展示:

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

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

软件测试面试文档

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值