自动化测试之验证码识别
前序工作:使用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 timefrom time import sleepimport pytesseractfrom selenium import webdriverfrom 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)#验证码idce=browser.find_element_by_id("captchaimg")print(ce.location)print(ce.rect)##########第一种写法k=1.5#确定左顶点坐标left=ce.location['x']*ktop=ce.location['y']*k#确定右底点坐标right=ce.size['width']*k+leftheight=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)
这里需要登录网址/apiGateway/view/?apiCode=184&pointCode=4
注册后下载sdk,然后添加上述代码,替换对应位置my_appId"
,"my_appSecret
,"替换为你的文件"
# python3.6.5# 需要引入requests包 :运行终端->进入python/Scripts ->输入:pip install requestsfrom ShowapiRequest import ShowapiRequestr = ShowapiRequest("/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
/qq_37866023/article/details/119361868
问题2:python3.8安装pyautogui失败,报错Requirement already satisfied解决
/qq_37866023/article/details/119360796
问题3:selenium中使用location无法定位验证码
/qq_37866023/article/details/119353060
问题4:pyautogui中moveTo无法定位
/qq_37866023/article/details/119349608