您现在的位置是:首页 > 文章详情

用python做自动化测试—Monkeyrunner问题的解决方案

日期:2017-07-02点击:312
Monkeyrunner为Andriod SDK 嫡亲的 测试工具,功能还是很强大的,但Andriod的测试技术发展比较晚,所以目前国内的教程和例子比较少,很多功能没有发掘出来。
Monkeyrunner的例程google下可以有很多,这里就不在重复了,下面说说大家可能遇到的几个问题,及解决方案。
1. 点击button,选择输入焦点,只能靠坐标来定位,一旦换手机,坐标完全失效了。
解决方案a: 通过device.getProperty("display.width"),device.getProperty("display.height")得到你调试手机的像素,在新的手机中,通过这2个参数的比例关系,可以得到在新手机的X,Y坐标点。
解决方案b:通过view  server查询ID来定位,这种方法是最好的,肯定不会错。但很多手机上view server不 工作,即使被rooted了(可以通过hierarchyviewer.bat来确认view server是否工作).  破解过程有点下复杂,大家可以参考这里,还是可以破解的。http://blog.apkudo.com/tag/viewserver/
from com.android.chimpchat.hierarchyviewer import HierarchyViewer
from com.android.monkeyrunner.easy import By
from com.android.hierarchyviewerlib.device import ViewNode
easy_device.locate(By.id('id/main_button'))
easy_device.touch(By.id('id/main_button'), 'downAndUp')
2.  测试结果的检查中,用图片来比较精确度不高。
很多 测试用例的检查结果中,我们希望同时检查app的界面是不是我们期望的,但通知栏的电池或者弹出个通知消息不好比较,容易导致结果比较失败。
解决方案a:通过OCR技术,可以获取到图片里的文字。python里面有https://code.google.com/p/pytesser/,当然这个是cpython的,monkeyrunner用的是jython, 无法直接调用cpython的模块,OCR里面 java的开源模块很多,jython直接调用java非常方便。
解决方案b:还 是通过view server得到界面上内容
hierarchy_viewer = device.getHierarchyViewer()
view_node = hierarchy_viewer.findViewById('id/prompt_text_view')
text = view_node.namedProperties.get('mText').toString()

最新内容请见作者的GitHub页:http://qaseven.github.io/

原文链接:https://yq.aliyun.com/articles/132733
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章