自动化测试识别验证码方法

在进行自动化测试,我发现很多人卡在验证码无法是识别的路上,往往都是需要开发提供万能码或者取消验证码,但是有的时候需要真实场景模拟,验证码的获取就比较困难,今天分享一个自己亲测的UI自动化测试登陆时验证码输入的有效简单的解决方法。

首先我采用的是python+tesserocr来识别验证码,下面是具体步骤

第一步、环境准备

1、python安装pytesseract和pillow库

2、win10安装tesserocr,下载tesseract并安装,默认路径即可

    环境变量的配置:我的电脑-属性-高级设置-环境变量

    系统变量中增减path变量:tesseract安装路径

    系统新增TESSDATA_PREFIX 变量:tesseract安装路径\tessdata

自动化测试识别验证码方法_第1张图片自动化测试识别验证码方法_第2张图片

 自动化测试识别验证码方法_第3张图片

3 修改pytesseract.py文件如下图

自动化测试识别验证码方法_第4张图片

 第二步:编写代码获取验证码

from pytesseract import pytesseract
from PIL import Image
from selenium import webdriver
import time as t
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)

driver.get('需要输入验证码网页的url')
driver.find_element(By.ID, 'details-button').click()
driver.find_element(By.ID, 'proceed-link').click()

driver.find_element(By.XPATH,'验证码的定位位置').screenshot('验证码命名')  # 截取验证码并保存到本地

img = Image.open(r'验证码命名')
ver = pytesseract.image_to_string(img,lang = 'eng')   #识别验证码
print(ver)
with open('index.txt', "w") as f:  
    f.write("".join(ver.split()))  # 去除空格的处理

with open("index.txt", "r") as f:  # 获得验证码并赋值给a
    a = f.read()

driver.find_element(By.XPATH,'输入验证码框的定位位置').send_keys(ver)  # 输入验证码
t.sleep(3)
driver.quit()

第三步:成功获取验证码

自动化测试识别验证码方法_第5张图片

你可能感兴趣的:(python,python,自动化,单元测试,测试工具)