123wowo 发表于 2014-5-7 19:37:31

求助,monkeyrunner自动化测试,如何点击控件对象

Android自动化测试中,很多时候我们的app里的控件有的没有ID,有的ID值重复的。查找 文章《Android自动化测试之Monkeyrunner解决ID重复问题》中的解决办法。
我现在遇到控件对象ID值重复的问题。
目前使用其提供的函数:
def getChildView(device,parentId, *childSeq):
    hierarchyViewer = device.getHierarchyViewer()
    str_getchildview="hierarchyViewer.findViewById('" + parentId +"')"   
    for index in childSeq:      
      str_getchildview+=('.children[' + str(index) + ']')         
    exec 'child_view=' + str_getchildview
    return child_view

调用时,使用:
device = MonkeyRunner.waitForConnection()
easy_device = EasyMonkeyDevice(device)
delete_photo=getChildView(device,'id/expanded_menu', 0, 0, 0)
获得控件的对象,打印出:
print str(delete_photo)
的值是:android.widget.TextView@439ec858
这是正确的。
我想单击这个控件对象delete_photo,但实现不了。
使用easy_device.touch('delete_photo',MonkeyDevice.DOWN_AND_UP)
和device.press('delete_photo',MonkeyDevice.DOWN_AND_UP)
都不行。
请教怎么实现点击控件对象delete_photo的功能呢?
请求大家的帮助。谢谢。

123wowo 发表于 2014-5-15 17:28:58

已经解决,通过获取此控件对象的坐标属性值,加上偏移值,计算出正确的坐标值。
再点击此坐标即可。
point = hierarchy_viewer.getAbsoluteCenterOfView(delete_photo)
#偏移值,需要通过hierarchyviewer.bat查看
offset_x = 0
offset_y = 87
button_x = point.x+offset_x
button_y = point.y+offset_y
#点击此坐标
device.touch(button_x, button_y, MonkeyDevice.DOWN_AND_UP)

cuikejie123 发表于 2016-5-28 21:31:56

学习,分享
页: [1]
查看完整版本: 求助,monkeyrunner自动化测试,如何点击控件对象