恭喜发财dife 发表于 2018-2-23 14:53:09

Appium Appium 下通过 OCR 的方式读取安卓的 toast 进行验证测试

针对appium下安卓toast的验证,之前搜了一下发现还没有中文的讨论,而appium英文论坛上提供
了这么一个思路的方法 这里是原帖,个人亲测有效,把过程和坑点给大家分享一下

核心思路是通过tesseract这个开源的ocr软件来识别截图中的文字,通过判断toast中的文字是否在
其中,来验证toast是否存在
个人使用的是Python环境,主要的环境依赖就是两个库,pytesseract和pillow
先是pip安装pytesseract和pillow,这个对任何平台都是一样的。
然后是装tesseract软件本身,Ubuntu比较简单就 sudo apt-get install tesseract 即可,
无奈本人的环境是win,因此碰到了麻烦,从 https://github.com/tesseract-ocr/tesseract/wiki/
Downloads 可以看到官方只提供了老版本(3.0.2)的编译包和语言库,这个包是个坑,千万不要用,
它的中文库识别能力几乎为0。光对比体积就能看出来了,这个库只有10m,新版本则为40m,
所以大家千万不要用官方的老版本。

然后下面有三个第三方包可选,个人的经验如下:
第一个是dropbox的,公司网络虽然有梯子可惜禁了dropbox,因此不能下。(好坏未知)
第二个是某德国大学的,我先下的这个,然而那个德国大学的下载地址速度只有几k,也是醉了
第三个下载地址更搞笑,说自己无法提供host了,感谢另外一个人提供host,跳转到第三方的第
三方之后,开始下载;
最神奇的事情出现了,那个德国大学的下载速度忽然就被带起来了 = =!

都下完了之后,考虑到那个第三方的第三方说自己都是beta包,我就还是装了那个大学的包,
因此只有大学的包是亲测有效的,另外两个大家可以自行踩雷(姚明脸)

当然,要识别中文,还要在 https://github.com/tesseract-ocr/tessdata 下载chi_sim的库来支持
中文识别,然后把这个库复制到 'tessdata' 目录, 默认是 C:\Program Files\Tesseract OCR\
tessdata 这样。

最后就是运行了,准备工作和截图我就省略了,直接放一下验证的demo
import pytesseract
from PIL import Image

toast_text = 'xxx'
screenshot_text = pytesseract.image_to_string(Image.open('Screenshot.png'), lang='chi_sim')
if toast_text in screenshot_text:
print 'toast is shown'
else:
print 'toast is not shown'运行结果对于toast中文字的识别还是比较有效,毕竟toast文字的背景色比较固定,好识别,如果要用来
识别app内部的内容,效果不稳定,大家可以自己尝试。


梦想家 发表于 2018-2-28 16:07:23

:handshake
页: [1]
查看完整版本: Appium Appium 下通过 OCR 的方式读取安卓的 toast 进行验证测试