01_识别图片&验证码登录

概述

有些场景的自动化测试中,需要带验证码登录,如下图,这种情况就需要识别图片中的验证码信息,然后转成文字进行登录

常用的方法有

  • 1 利用baidu提供的api方法
  • 2 利用pytesseract+Tesseract-OCR图片文字识别
  • 3 使用一些训练方法识别(暂时未研究)

1 利用baidu提供的api方法

这个是产品界面的连接 https://cloud.baidu.com/product/ocr
使用之前需要创建自己的api id 在这个link里创建 https://console.bce.baidu.com/ai/?_=1595927511997#/ai/ocr/overview/index

Demo1 简单图片处理

# -*- coding: UTF-8 -*-
from aip import AipOcr

# 下面三个变量都是需要在百度里注册后才能使用的
APP_ID = '21647273'
API_KEY = 'qk3p1gELsLrjMFI4E9ZKWGi3'
SECRET_KEY = 'WQVPU7F4HIHc4s15fmx3QjqeoGGGktyA'

# 初始化AipFace对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

# 读取图片
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
# 图片的地址需要根据实际情况修改
image = get_file_content('../test6.png')
# 调用通用文字识别, 图片为本地图片
res = client.general(image)
print(res)

for item in res['words_result']:
    print(item['words'])

执行后的效果图


但是不能处理日语

Demo2:附带需要处理验证码的情况

from selenium import webdriver
from PIL import Image
from aip import AipOcr

browser = webdriver.Chrome()  # 实例化对象
url = 'http://daido.sitetest1.com/login'
browser.get(url)
png = browser.find_element_by_id('img_seccode')  # 查找验证码元素
png.screenshot('test.png')

img = Image.open('test.png')
img = img.convert('L')  # P模式转换为L模式(灰度模式默认阈值127)
count = 127  # 设定阈值
table = []
for i in range(256):
    if i < count:
        table.append(0)
    else:
        table.append(1)

img = img.point(table, '1')
img.save('captcha.png')  # 保存处理后的验证码

# 识别码
APP_ID = '21647273'
API_KEY = 'qk3p1gELsLrjMFI4E9ZKWGi3'
SECRET_KEY = 'WQVPU7F4HIHc4s15fmx3QjqeoGGGktyA'
# 初始化对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 读取图片
def get_file_content(file_path):
    with open(file_path, 'rb') as f:
        return f.read()

image = get_file_content('captcha.png')
# 定义参数变量
options = {'language_type': 'CHN_ENG', }  # 识别语言类型,默认为'CHN_ENG'中英文混合
# 调用通用文字识别
result = client.basicGeneral(image, options)  # 高精度接口 basicAccurate
print(result)
try:
    code = result['words_result'][0]['words']
except:
    code = '验证码匹配失败'
    print(code)
posted @ 2020-09-10 10:19  Alice1005  阅读(237)  评论(0编辑  收藏  举报