Appium-Python 识别 toast 弹出框消息

前言: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目录

参考代码:

Appium-Python 识别 toast 弹出框消息_第1张图片

上面代码中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

你可能感兴趣的:(Appium-Python 识别 toast 弹出框消息)