Web自动化测试之图文验证码的解决方案

2023-12-17

对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码, 验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的,再复杂一点就是滑动验证的。 诸如此类的验证码,对我们的系统增加了安全性的保障,但是对于我们测试人员来讲,在自动化测试的过程中,无疑是一个棘手的问题。

1、Web 化验证码解决方案

一般在我们测试过程中,登录遇到上述的 验证码 的时候,有以下种解决方案:

  • 第一种、让开发去掉验证码
  • 第二种、设置一个万能的验证码
  • 第三种、通过 cookie 绕过登录
  • 第四种、自动识别技术识别验证码
2、验证码解决方案
# coding:utf-8
import os
import subprocess
from PIL import Image
 
 
def get_captcha(driver, captcha_id, full_screen_img_path, captcha_img_path, captcha_final_path, txt_path, ocr_path):
    # 浏览器界面截图
    driver.save_screenshot(full_screen_img_path)
    # 找到验证码图片,得到它的坐标
    element = driver.find_element_by_id(captcha_id)
    left = element.location['x']
    top = element.location['y']
    right = element.location['x'] + element.size['width']
    bottom = element.location['y'] + element.size['height']
    left, top, right, bottom = int(left), int(top), int(right), int(bottom)
    img = Image.open(full_screen_img_path)
    img = img.crop((left, top, right, bottom))
    # 得到验证码图片
    img.save(captcha_img_path)
    # 打开验证码图片
    img = Image.open(captcha_img_path)
    # 颜色直方图,255种颜色,255为白色
    # 新建一张图片(大小和原图大小相同,背景颜色为255白色)
    img_new = Image.new('P', img.size, 255)
    for x in range(img.size[1]):
        for y in range(img.size[0]):
            # 遍历图片的xy坐标像素点颜色
            pix = img.getpixel((y, x))
            # print(pix)
            # 自己调色,r=0,g=0,b>0为蓝色
            if pix[0] < 20 and pix[1] < 20 and pix[2] > 50:
                # 把遍历的结果放到新图片上,0为透明度,不透明
                img_new.putpixel((y, x), 0)
    img_new.save(captcha_final_path, format='png')
 
    # 通过tesseract工具解析验证码图片,生成文本
    os.system(ocr_path)
 
    # 读取txt文件里面的验证码
    with open(txt_path, 'r') as f:
        if f.read():
            t = f.read().strip()
            # 去掉中间空格
            if ' ' in t:
                t = t.replace(' ', '')
            if t.isdigit() and len(t) == 4:
                return t
            else:
                return 'fail'
 
 
def check_resp(result, msg):
    if msg in result:
        return 'pass'
    else:
        return 'failed'
 
 
# 接口 - 识别验证码
def get_captcha(captcha_img_path, captcha_final_path, txt_path, ocr_path):
 
    # 打开验证码图片
    img = Image.open(captcha_img_path)
 
    # 新建一张图片(大小和原图大小相同,背景颜色为255白色)
    img_new = Image.new('P', img.size, 55)
    for x in range(img.size[1]):
        for y in range(img.size[0]):
            # 遍历图片的xy坐标像素点颜色
            pix = img.getpixel((y, x))
            # print(pix)
            # 自己调色,r=0,g=0,b>0为蓝色
            if pix[0] < 20 and pix[1] < 20 and pix[2] > 50:
                # 把遍历的结果放到新图片上,0为透明度,不透明
                img_new.putpixel((y, x), 0)
    img_new.save(captcha_final_path, format='png')
 
    # 通过tesseract工具解析验证码图片,生成文本,【Tesseract-OCR必须和jpg的根目录必须相同,如C盘、D盘!!!】
    os.system(ocr_path)
 
    # 读取txt文件里面的验证码
    with open(txt_path, 'r') as f:
        if r.read():
            t = f.read().strip()
            # 去掉中间空格
            if ' ' in t:
                t = t.replace(' ', '')
            # 如果是数字且长度为4,就返回数字,如果不是就返回 fail
            if t.isdigit() and len(t) == 4:
                return t
            else:
                return fail
总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

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

Web自动化测试之图文验证码的解决方案 的相关文章

随机推荐

  • 迅为IMX6UL核心板在便携式医疗设备中的应用方案

    在科技日益发展的今天 便携式医疗设备变得越来越受欢迎 这些小巧 轻便的设备 例如IMX6UL核心板 为医疗行业带来了巨大的变革 它们不仅便于携带 而且集成了多种功能 满足了人们对健康管理的各种需求 便携式医疗设备在当今社会越来越受到欢迎 这
  • 两路wav文件读取解析和混音输出并使用WaveOut相关API播放

    目录 wav文件格式简介 wav文件头定义 读取wav文件 读取背景音文件 音频混音 使用Windows WaveOut 相关API播放混音后的音频数据 将混音后的数据保存到新的wav文件中
  • 数字化和数智化一字之差,究竟有何异同点?

    在2023杭州云栖大会的一展台内 桌子上放着一颗番茄和一个蛋糕 一旁的机器人手臂融入 通义千问 大模型技术后 变得会 思考 不仅能描述 看 到了什么 还能确认抓取的是番茄而不是蛋糕 传统的机械臂通常都只能基于预设的指令和流程来执行任务 引入
  • FMOD Core API 指南

    目录 3 Core API 指南 3 1 什么是 Core API 3 2 链接的插件 3 2 1 静态 3 2 2 动态 3 3 API 功能
  • gdi32.dll文件缺失导致程序无法运行问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个gdi32 d
  • 计算机毕业设计:基于python二手商品交易网站 二手商品交易系统(附源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机专业毕业设计选题汇总 建议收藏 毕业设计
  • 布隆过滤器

    布隆过滤器地提出 我们在使用新闻客户端看新闻时 它会给我们不停地推荐新的内容 它每次推荐时要去重 去掉 那些已经看过的内容 问题来了 新闻客户端推荐系统如何实现推送去重的 用服务器记录了用 户看过的所有历史记录 当推荐系统推荐新闻时会从每个
  • gameux.dll文件丢失导致程序无法运行问题

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

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

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

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个glmf32
  • 大数据毕业设计:基于python商品数据采集分析可视化系统 淘宝数据采集 大数据 大屏可视化(附源码+论文)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机专业
  • 测试为什么分白盒、黑盒、单元、集成测试?

    对于想进入测试行业的小萌新 本文的诉求主要分为三块 1 想知道分为这么多种测试的原因 2 解决各种概念问题 3 提供各种软件测试工具 安排 一 为什么测试的概念这么多 一个软件项目就好比一部复杂的汽车 有很多零件 当每个零件生产完成后 就要
  • 题解 | #某宝店铺连续2天及以上购物的用户及其对应的天数#

    腾讯财经线暑期实习生面经 前女友突然在我的婚礼现场求复合怎么办 不妙了 好像自己真成小丑了 华为实习 提前批面试 池子里泡了一百多天了 发的一堆sp被鸽麻了 求求大家投下小米 HC还剩50 剩下不到半个月去哪招人呀 求求大家投下小米吧 发的
  • 微信小程序开发前环境搭建

    下载安装微信小程序开发者工具 官方地址 注册微信开发者账号 注册完毕 登录微信公众平台官网扫码登录 创建项目
  • Jmeter 简单的压力测试!

    今天我们一起利用Apache Jmeter 一种接口测试工具 来进行压力测试学习 压力测试主要目的是测试负载均衡的实现效果 安装Jmeter这里就不做阐述了 上网下载个最新版就可以了 因为Jmeter是由JAVA语言开发的 所以安装之前先把
  • FXSEXT32.dll文件丢失导致程序无法运行问题

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

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

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

    对于web应用程序来讲 处于安全性考虑 在登录的时候 都会设置验证码 验证码的类型种类繁多 有图片中辨别数字字母的 有点击图片中指定的文字的 也有算术计算结果的 再复杂一点就是滑动验证的 诸如此类的验证码 对我们的系统增加了安全性的保障 但