[Android]Monkeyrunner得id查找方法

简介:
该方法是莹莹同学发现得,先感谢。 

实现方式如下:
from com.android.monkeyrunner import MonkeyRunner as MR  
from com.android.monkeyrunner import MonkeyDevice as MD  
from com.android.monkeyrunner import MonkeyImage as MI  
from com.android.monkeyrunner.easy import EasyMonkeyDevice,By  

device=MR.waitForConnection(10)  
if device:  
 print("Connect device successful!")  
else:  
 print("Connect device failed!")  
device=EasyMonkeyDevice(device)  
device.installPackage("D:\\MonkeyRunnerDemo\\Apps\\estore.apk")  
device.startActivity(component="com.eshore.ezone/.StartActivity")  
MR.sleep(3)  
device.touch(By.id("id/btn_disagree"),device.DOWN_AND_UP)  


注意点: 
1.device需要用easymonkeydevice再次封装 
2.touch方法id的如何使用 
EasyMonkeyDevice类里面还有很多方法,包括exists(By)、getText(By)、type(By,String)、visible(By)等等。 

再来个长点的脚本: 
from com.android.monkeyrunner import MonkeyRunner as MR  
from com.android.monkeyrunner import MonkeyDevice as MD  
from com.android.monkeyrunner import MonkeyImage as MI  
from com.android.monkeyrunner.easy import EasyMonkeyDevice,By  
from com.android.chimpchat.hierarchyviewer import HierarchyViewer as HV  
from com.android.hierarchyviewerlib.device import ViewNode as VN  
  
T528d=MR.waitForConnection(10)  
if T528d:  
    print("Connect device successful!")  
else:  
    print("Connect device failed!")  
eT528d=EasyMonkeyDevice(T528d)  
hvT528d=T528d.getHierarchyViewer()  
T528d.installPackage("D:\\MonkeyRunnerDemo\\Apps\\estore.apk")  
T528d.startActivity(component="com.eshore.ezone/.StartActivity")  
MR.sleep(3)  
vnT528d=hvT528d.findViewById("id/btn_agree")  
print("Width: "+str(vnT528d.width))  
print("Height: "+str(vnT528d.height))  
vnT528dCoordinate1=hvT528d.getAbsoluteCenterOfView(vnT528d)  
print("vnT528dCoordinate1X: "+str(vnT528dCoordinate1.x))  
print("vnT528dCoordinate1Y: "+str(vnT528dCoordinate1.y))  
vnT528dCoordinate2=hvT528d.getAbsolutePositionOfView(vnT528d)  
print("vnT528dCoordinate2X: "+str(vnT528dCoordinate2.x))  
print("vnT528dCoordinate2Y: "+str(vnT528dCoordinate2.y)) 


        附上运行结果: 
Width: 165 
Height: 49 
vnT528dCoordinate1X: 127 
vnT528dCoordinate1Y: 680 
vnT528dCoordinate2X: 45 
vnT528dCoordinate2Y: 656 

        ViewNode类里面还有很多属性,包括parent(获取父控件)、children(获取子控件)、left、top等等,这里就不一个个挨着讲了,自己看吧,呵呵。 

另外一篇比较全,比较好的monkeyrunner文章
目录
相关文章
|
6月前
|
Android开发 开发者
Android自定义view之利用drawArc方法实现动态效果
本文介绍了如何通过Android自定义View实现动态效果,重点使用`drawArc`方法完成圆弧动画。首先通过`onSizeChanged`进行测量,初始化画笔属性,设置圆弧相关参数。核心思路是不断改变圆弧扫过角度`sweepAngle`,并调用`invalidate()`刷新View以实现动态旋转效果。最后附上完整代码与效果图,帮助开发者快速理解并实践这一动画实现方式。
178 0
|
4月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
360 11
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
566 2
基于Android P,自定义Android开机动画的方法
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
666 2
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
487 15
Android 系统缓存扫描与清理方法分析
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
295 2
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
723 1
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
2360 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
Android开发
Android面试题之View的invalidate方法和postInvalidate方法有什么区别
本文探讨了Android自定义View中`invalidate()`和`postInvalidate()`的区别。`invalidate()`在UI线程中刷新View,而`postInvalidate()`用于非UI线程,通过消息机制切换到UI线程执行`invalidate()`。源码分析显示,`postInvalidate()`最终调用`ViewRootImpl`的`dispatchInvalidateDelayed`,通过Handler发送消息到UI线程执行刷新。
186 1
|
Java 开发工具 Android开发
Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息
本文介绍了在Android Studio项目中通过修改`build.gradle`脚本来自动获取并添加Git的commit ID、branch名称和用户信息到BuildConfig类中,从而实现在编译时将这些版本信息加入到APK中的方法。
492 0