自动化测试之验证码识别

自动化测试之验证码识别

前序工作:使用jpress进行测试(需要注册安装),需要安装Java,tomcat,mysql,这里请自行百度安装。然后运行tomcat,以管理员身份运行cmd打开mysql,进入。

打开mysql
以管理员身份运行cmd
直接进入对应盘(以D盘为例)-----输入d:
进入d盘其他目录------cd D:\mysql\mysql-5.7.35-winx64\bin
输入net start mysql

在浏览器输入http://localhost:8080/jpress/user/register

进入如下界面

记录下自动化测试时两种常用的验证码识别方法

方法1–使用pytesseract识别

这里使用jpress网站进行测试:话不多说,直接上代码

#coding:utf-8
###############测试获取简单验证码
import time
from time import sleep

import pytesseract
from selenium import webdriver
from PIL import Image
#测试截取验证码
def test1():
    #打开谷歌浏览器
    browser=webdriver.Chrome(r'd:/chromedriver.exe')
    #打开首页
    browser.get('http://localhost:8080/jpress/user/register')
    #窗口最大化
    browser.maximize_window()
    #获取验证码图片
    t=time.time()
    picture_name1=str(t)+'.png'
    #截屏
    browser.save_screenshot(picture_name1)
    #验证码id
    ce=browser.find_element_by_id("captchaimg")
    print(ce.location)
    print(ce.rect)
    ##########第一种写法
    k=1.5
    #确定左顶点坐标
    left=ce.location['x']*k
    top=ce.location['y']*k
    #确定右底点坐标
    right=ce.size['width']*k+left
    height=ce.size['height']*k+top
    # 将图片打开
    im = Image.open(picture_name1)
    # 抠图
    img = im.crop((left,top,right,height))
    ##########第二种写法
    # location=ce.location
    # size=ce.size
    # k = 1.5
    # rangle = (location['x'] * k, location['y'] * k, location['x'] * k + size['width'] * k, location['y'] * k + size['height'] * k)
    # #将图片打开
    # im=Image.open(picture_name1)
    # #抠图
    # img=im.crop(rangle)

    t=time.time()
    #抠图后保存为第二张图片吧
    picture_name2=str(t)+'.png'
    img.save(picture_name2)#截取到的验证码图片
    browser.close()
def test2():
    #打开截取的图片
    image1=Image.open(r'ss.png')
    print(image1)
    #转换输出验证码
    str=pytesseract.image_to_string(image1)
    print(str)

方法2–使用第三方api识别(这里用的showapi)

这里需要登录网址https://www.showapi.com/apiGateway/view/?apiCode=184&pointCode=4
注册后下载sdk,然后添加上述代码,替换对应位置my_appId","my_appSecret"替换为你的文件"

# python3.6.5
# 需要引入requests包 :运行终端->进入python/Scripts ->输入:pip install requests
from ShowapiRequest import ShowapiRequest

r = ShowapiRequest("http://route.showapi.com/184-4","my_appId","my_appSecret" )
r.addFilePara("image", "替换为你的文件")
r.addBodyPara("typeId", "34")
r.addBodyPara("convert_to_jpg", "0")
r.addBodyPara("needMorePrecise", "0")
res = r.post()
print(res.text) # 返回信息

方法3–使用第三方api识别(这里用的超级鹰)

引用一篇大佬的博客

第一种方法可能会遇到一些常见的问题,我写在其他博客里啦(给自己打广告哈哈)在这里插入图片描述

问题1:pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it’s not in your path

https://blog.csdn.net/qq_37866023/article/details/119361868

问题2:python3.8安装pyautogui失败,报错Requirement already satisfied解决

https://blog.csdn.net/qq_37866023/article/details/119360796

问题3:selenium中使用location无法定位验证码

https://blog.csdn.net/qq_37866023/article/details/119353060

问题4:pyautogui中moveTo无法定位

https://blog.csdn.net/qq_37866023/article/details/119349608

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值