Airtest是一款 基于图像识别原理 的跨平台UI自动化测试框架,它能够根据大量的 特征点 来识别一个截图在当前画面中的位置,但是它并不能识别出截图中具体包含了什么文字。

而在自动化测试的过程中,我们会经常遇到需要进行文字识别的场景,比如 识别验证码 、 识别截图中的文字 、 读取截图中的数值 等等,遇到这些情况时我们可以如何处理呢?

今天教大家用一款免费的开源图像OCR文字识别软件 – Tesseract-OCR 来处理上述情况。

1.安装Tesseract-OCR.exe

在网上搜索“Tesseract”,我们可以找到很多Tesseract-OCR的下载链接和安装教程,大家可以选择其中一个版本下载到本地即可。

下载完成后双击进入安装,需要特别注意的是,在选择安装的组件时,我们需要把 Additional language data(download) 这一选项勾上,目的是 安装各个版本的语言包 ,后续我们就不用手动下载语言包来安装了。


还有一点要注意的是,记住我们选择的软件安装路径,因为我们需要把这个路径添加到 系统环境变量 的 path 中:


另外一个要新增的环境变量是 TESSDATA_PREFIX ,如下图所示,未设置在识别过程中会报 Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your “tessdata” directory 的错误:


完成以上工作后,我们可以在命令行用 tesseract -v 验证环境是否配置成功:

2.在本地python环境中安装pytesseract

因为我们最终要在python环境中使用 airtest 和 tesseract ,所以需要在本地的python环境中安装上 airtest 库和 pytesseract 库:

pip install airtest
pip install pytesseract

复制代码
安装完毕后可以在命令行输入 pip list 检查安装结果:

3.用airtest截图并识别截图文字

打开我们的AirtestIDE,在 选项–设置–自定义python.exe路径 中设置我们刚才安装好对应库的python环境:

以之前官网提供的 poco demo的界面为例,我们用 airtest 把红框部分的截图截取下来,然后再利用 tesseract 把截图中的文字识别并打印出来:

具体实现如下:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"from airtest.core.api import *
from airtest.aircv import *
auto_setup(__file__)from PIL import Image
import pytesseract# 局部截图
screen = G.DEVICE.snapshot()
local = aircv.crop_image(screen,(132,58,380,126))# 保存局部截图到指定文件夹中
pil_image = cv2_2_pil(local)
pil_image.save("D:/test/score0.png", quality=99, optimize=True)# 读取截图并识别截图中的文字
image = Image.open(r'D:/test/score0.png')
text = pytesseract.image_to_string(image)
print("-----------初始数据为--------------")
print(text)

识别结果如下:

知识点:

① G.DEVICE.snapshot() ,对当前设备画面进行截图并保存在内存中。

② crop_image() ,局部截图的方法,需要传入俩个参数,一个是内存中的截图,就像这里的 screen ,另一个是截取偏移 [x_min, y_min, x_max ,y_max] 。

③ Image.open() ,用来直接读取给定路径指向的图片

④ image_to_string() ,用来解析图片中的文字

4.识别验证码
以下述验证码截图为例,该截图的保存路径为 D:/test/7364.jpg :


识别方式和结果如下:

# 识别验证码
image2 = Image.open(r'D:/test/7364.jpg')
text2 = pytesseract.image_to_string(image2)
print("-----------验证码为--------------")
print(text2)
log("验证码为:"+text2)

5.识别中文文字

识别中文的方法和识别数字与英文基本一致,但比较特别的是,我们需要在 image_to_string() 方法中指定中文的语言参数(示例代码中指定了简体中文来识别截图):

# 识别中文
image3 = Image.open(r'D:/test/3.png')
text3 = pytesseract.image_to_string(image3,lang='chi_sim')
print("-----------识别出来的文字为:--------------")
print(text3)
log("识别出来的文字为:"+text3)

学习资源分享

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

一文3000字教你实现Airtest测试中文字识别【保姆级教程】相关推荐

  1. 教你彻底卸载MySQL 并重装(保姆级教程 )

    前言:都是自己踩过的坑(其他博主也有,不过我的特殊,按步骤走完重新安装仍要输入原密码,本篇主要解决和我问题类似的情况),跟着以下步骤走就行. 步骤一:关闭MySQL服务 右击[计算机],选择[管理], ...

  2. 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 下

    文档大纲: 本文上半部分之前已经发过了,传送门:50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 上 此篇文章是整个文档的下半部分,将接着上半部分从第五章开始. 五.实时数仓建设核心 ...

  3. 【Midjourney实操】逼真到颤抖!保姆级教程教生成效果炸裂的图片

    最近,许多由Midjourney V5创作的画作在网络上引起了热议,许多人惊呼:人类画师, 插画师, 设计师统统活不下去了! 比如下面这张中国情侣的画作: 因为前段时间这个很火, 我跟着同样的prom ...

  4. ❤️周末爆肝两天❤️,万字长文,手把手教你配置CSDN主页的独特域名(保姆级教程,建议收藏)

    ❤️ 感受下效果图 ❤️ 目录 一.前言 二.先解决有没有的问题 1. 前置条件 2. 购买云服务器 3. 购买DNS域名 4. 配置Apache2服务 5. 配置云服务器的端口映射 6. 配置ngi ...

  5. SpringBoot 配置 generator代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)

    保姆级教程,逻辑删除及字段自动填充设置,特别要说明的是本次用的是MySQL数据库,如果使用Oracle数据库是,数据库配置需要改变,数据库表一定要大写,否则无法生成代码. 数据库表 CREATE TA ...

  6. 保姆级教程:手把手教你搭建个人网站

    保姆级教程:手把手教你搭建个人网站 前言 准备与搭建 1.Git管理工具的下载与安装 2.nodejs环境安装 3.hexo博客框架下载 npm换国内源 使用npm下载hexo博客框架 初始化mybl ...

  7. [保姆级教程]教你使用ksweb+内网穿透搭建网站

    [保姆级教程]教你使用ksweb+内网穿透搭建网站] https://b23.tv/fXXoLRQ

  8. FastText词向量训练、使用及可视化操作【保姆级教程(包含藏文处理方法)】

    目录 一.前言 二.FastText词向量训练 2.1 数据输入格式 2.2词向量训练 三.词向量使用 一.前言 本文是word2vec词向量篇的姊妹篇.fasttext是静态词向量构建方法的一种,本 ...

  9. Word2Vec词向量训练、使用及可视化操作【保姆级教程(包含藏文处理方法)】

    目录 一.前言 二.Word2Vec词向量训练 2.1 数据输入格式 2.2词向量训练 三.词向量使用 四.词向量可视化 一.前言 word2vec是静态词向量构建方法的一种,本文将介绍word2ve ...

最新文章

  1. 选择Kong作为你的API网关
  2. android高德地图显示多点标记,高德地图多点标记自定义地图
  3. C#网络编程:4订立协议和发送文件
  4. Java多线程之CAS深入解析
  5. python convert函数_Python内置函数
  6. 维修变频器和服务器赚钱吗,【转】一个变频器维修老手的7年经验与心得
  7. C++基础::便捷函数
  8. 伍德里奇计量经济学导论pdf_伍德里奇 计量经济学导论 第三章第三节-1 MLR1-MLR4...
  9. 推荐更好用的网络检测命令
  10. 28335之GPIO输入
  11. jenkins下载插件很慢
  12. 苹果Mac装双系统对电脑有什么影响?Mac装双系统的利弊分析
  13. 出界的路径数----迭代问题与计算思维
  14. 苹果官方mfi认证名单_【大型推销配件现场】苹果回应iPhone12消磁,这波操作太6了 - 社会...
  15. linux分屏显示命令文件夹,Linux简易命令整理
  16. 第五天学习--存储结构与磁盘划分
  17. 实验9-10 平面向量加法 (15 分)
  18. 2020湖南省技能竞赛获奖名单_心理知识竞赛获奖名单新鲜出炉
  19. 【WLAN】【测试】Linux下aircrack-ng的应用之空口抓包全解
  20. python名片管理系统难点总结_Python学习笔记之名片管理系统

热门文章

  1. CSS 微信聊天界面
  2. POJ9273:PKU2506Tiling_递推+高精度
  3. linux sftp ipv6,linux 搭建ipv6服务器搭建
  4. java 字符串替换中文逗号
  5. 链表(数据结构)- LRC歌词解析播放示例
  6. kmeans聚类算法mysql_聚类--k-means算法
  7. 15.8 -判定表测试
  8. 键盘点击事件(坦克大战)
  9. DuiLib教程--下载和生成
  10. 网页视频轮播video