appium无法获取toast的解决方案
2016-10-12 15:19
148 查看
a.本人之前一直使用的robotium自动化测试框架,但是考虑到appium更贴近用户的使用习惯(例如输入操作,robotium直接复制粘贴,而appium会调用系统键盘并逐一输入),所以决定试用下APPIUM这个自动化框架
b.实际使用过程中发现appium无法获取到底层的toast提示信息,例如未输入账号点击APP的登录按钮,会提示’请输入账号’这样的toast消息,在网上找过资料,也有大神基于seleriod框架定义了find_toast函数,但是拿过来用发现效果不怎么好,于是想到将toast弹出时的页面截图,从图片中获取’请输入账号’这个中文字符串,再来进行比对
c.废话不多少,下面是方法:
博主采用的python语言,原理是利用python-OCR识别图片中的中文字符,python-OCR的安装过程如下:
开发语言:python
使用工具类:1.pyocr
2.PIL
3.tesseract-ocr
步骤:
1.pyocr
网络通直接使用命令:
pip install pyocr
2.安装pil
网络通直接使用命令:
pip install PIL
3.安装tesseract-ocr
http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe
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:\123.png即为appium截取的图片,lang=’chi_sim’代表是中文识别
打印输出的就是整个123.png页面上所包含的中文字符,也许不仅仅只有“请输入账号”,我们只需要通过字符串提取出来即可。
b.实际使用过程中发现appium无法获取到底层的toast提示信息,例如未输入账号点击APP的登录按钮,会提示’请输入账号’这样的toast消息,在网上找过资料,也有大神基于seleriod框架定义了find_toast函数,但是拿过来用发现效果不怎么好,于是想到将toast弹出时的页面截图,从图片中获取’请输入账号’这个中文字符串,再来进行比对
c.废话不多少,下面是方法:
博主采用的python语言,原理是利用python-OCR识别图片中的中文字符,python-OCR的安装过程如下:
开发语言:python
使用工具类:1.pyocr
2.PIL
3.tesseract-ocr
步骤:
1.pyocr
网络通直接使用命令:
pip install pyocr
2.安装pil
网络通直接使用命令:
pip install PIL
3.安装tesseract-ocr
http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe
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目录
# coding=utf-8 from pyocr import pyocr from PIL import Image tools = pyocr.get_available_tools()[:] print tools[0].image_to_string(Image.open('D:\\123.png'),lang='chi_sim')
上面代码中D:\123.png即为appium截取的图片,lang=’chi_sim’代表是中文识别
打印输出的就是整个123.png页面上所包含的中文字符,也许不仅仅只有“请输入账号”,我们只需要通过字符串提取出来即可。
相关文章推荐
- “无法从web服务器获取项目文件” 解决方案(转)
- “无法从web服务器获取项目文件”解决方案
- Linux中Curl命令couldn't connect to host解决方案 php操作Curl(http,https)无法获取远程数据解决方案
- ListView item项中包含某些可以抢焦点的控件导致无法获取焦点问题的解决方案
- commons-io在struts框架中无法获取upload.parseRequest(request)上传的文件解决方案
- “无法从web服务器获取项目文件”解决方案
- android SDK manager 无法获取更新版本列表的解决方案——国内教育资源镜像
- ListView中Item无法获取点击事件的解决方案
- JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案
- centOS7 Minima无法上网解决方案(Linux设置开机自动获取ip地址)
- Window编程下ListView“无法获取点击空白处所在组”的完美解决方案
- UCHome中上传大图片没有提示或提示无法获取图片大小的解决方案
- vs2003 打开VS.NET项目时遇到 “无法从web服务器获取项目文件” 解决方案
- CheckBoxList 无法通过js获取选中value值 - 解决方案
- infopath表单预览正常,发布后无法通过Web Service获取当前用户信息的解决方案
- vsual studio.net“无法从web服务器获取项目文件”解决方案
- Asp.net MVC P2 中无法正确获取 CheckBox值的bug的解决方案
- 正常获取IPV6地址却无法使用的解决方案
- 真机测试时个别机型无法显示toast的问题解决方案
- Spring MVC无法获取到页面表单put过来的参数的解决方案