永发信息网

如何使用monkeyrunner与view进行交互

答案:2  悬赏:0  手机版
解决时间 2021-04-01 11:44
  • 提问者网友:蔚蓝的太阳
  • 2021-04-01 07:32
如何使用monkeyrunner与view进行交互
最佳答案
  • 五星知识达人网友:白昼之月
  • 2020-10-20 02:57
如何使用monkeyrunner与view进行交互
android官方里的monkeyrunner只介绍了一些有限的ui测试方法. 比如只能指定坐标点模拟操作行为, 测试结果对比只能通过截图进行简单对比结果. 当然我们可以聪明的来实现猜测到view视图的坐标点,那么我们就可以像robotium一样, 在monkeyrunner脚本中,对控件级的view视图进行交互操作.
如何实现捕捉到当前activity展现的所有的控件**呢?monkeyrunner.jar 里目前有EasyMonkeyDevice.class 和 By.class , 提供了一些新的api, 很大的满足了一些高级需求.
有几个blog文章对EasyMonkeyDevice类的api进行了一些示例, 非常浅显易懂.
yan1391的博客 Android 测试之初试 Monkeyrunner。 国外的 diego也写了一系列关于monkeyrunner 的文章,并自己写了一些viewclient apis 可以下载到 ,非常不错.请大家参考,但是diego 把博客写道了blogspot上, 哈,所以大陆的朋友们就郁闷了.只能**看了.
其实以上所有文章主要通过使用了By , EasyMonkeyDevice , monkeydevice 这3个类来实现与view object的交互. 那我们就对这3个类进行简单的剖析一下.
访问这里 可以看到EasyMonkeyDevice和By的源码(**浏览).
1. By.class 可以根据id获得viewobject . 例如我们有一个text view 的id是 id/account 那么我们就可以通过如下获得该view object. account = By.id(‘id/account’)
2. EasyMonkeyDevice.class获得view object后,可以用EasyMonkeyDevice类进行一些操作. getText() , touch(), type(). 分别为获得该view object 的文本值, 进行触摸屏操作(其会获取view object的坐标值,并进行操作). type() 则会先touch, 然后输入字符. 3. monkeyDevice **浏览源码
# 通过MonkeyDevice获取HierarchyViewer对象实例 hierarchy_viewer = device.getHierarchyViewer()
#通过HierarchyViewer获取ViewNode实例(一个viewnode实例代表一个控件) view_node = hierarchy_viewer.findView(By.id(‘id/emptyText’))
#获取控件内的文本
text = view_node.namedProperties.get(‘mText’).toString() if text.find(‘h**e any’) < 0: print ‘not find h**e any!’ else:
print ‘find h**e any!’ print text
总结: 如此这般,我们用monkeyrunner 也可以写出和robotium一样的脚本,可以对view object 进行操作. 而且可以和坐标点值的方法进行融合. 可以由很大的突破.
全部回答
  • 1楼网友:冷風如刀
  • 2020-12-03 12:08
在python下对比两张图片是一件很容易的事情,在monkey runner下进行图片比对我还没有找到好的方法,python 中的pil调用的是c模块,而monkey runner是java, 所以不能在monkey runner中直接使用pil库,还好上面的代码给了我解决问题的思路,在monk...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯