前言:Windows 的 appium1.4 版本使用广泛,但是一直无法抓取到 app的 total 弹出消息,造成了一定程度上断言困难的情况。这里我尝试了使用曲线救国的方式 使用Tesseract OCR (光学字符识别)和 pillow 来识别弹出框的内容。
1.使用截图的方式识别
我使用的是python语言,原理是利用python-OCR识别图片中的中文字符,python-OCR的安装过程如下:
使用工具类:
1.pyocr
2.PIL
3.tesseract-ocr
1,2 可以直接使用pip安装
3.安装tesseract-ocr
http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe
下载后直接安装,建议默认安装过程中的选项,安装目录默认C:\Program Files (x86)\Tesseract-OCR
下载tesseract-ocr的中文库,地址:https://codeload.github.com/tesseract-ocr/tessdata/zip/master,里面包含tesseract多有的文字库,chi_sim.traineddata为简体中文库,将该文件放至C:\Program Files (x86)\Tesseract-OCR\tessdata目录
参考代码:
上面代码中D:\test.png即为appium截取的图片,lang=’chi_sim’代表是中文识别
打印输出的就是整个test.png页面上所包含的中文字符。
2.使用抓取toast方式识别 (appium1.6 以上)
from selenium.webdriver.support.waitimport WebDriverWait
from selenium.webdriver.supportimport expected_conditions
from selenium.webdriver.common.byimport By
def find_toast(self,message, timeout=10, poll_frequency=0.5): #获取toast message为需要抓到的toast文本
xp_message= '//*[@text=\'{}\']'.format(message)
element= WebDriverWait(self.driver, timeout, poll_frequency).until(
expected_conditions.presence_of_element_located((By.XPATH, xp_message)))
if element.text== message:return True
else:return False