自动化测试中不同uid 之UI touch操作

在自动化测试中touch组件的操作,一般有以下几个方法

x,y代表横纵坐标

1.MonkeyRunner

在其Python脚本或者monkeyrunner命令行中调用

device.touch(x,y,'')

2.Instrumentation

		try {  
                             Instrumentation inst=new Instrumentation();  
                             inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),  
                                     SystemClock.uptimeMillis(),   
                                     MotionEvent.ACTION_DOWN, x, y, 0));  
                             inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),  
                                     SystemClock.uptimeMillis(),   
                                     MotionEvent.ACTION_UP, x, y, 0));    
                        } catch(Exception e) {  
                            Log.e("Exception when sendPointerSync", e.toString());  
                       }  

3.Solo

需导入robotium库,robotium是一套黑盒测试工具

solo.clickOnScreen(x,y);

 

4.利用runtime运行shell命令

Runtime.getRuntime.exc("sendevent /dev/input/event0 3 0 x")
Runtime.getRuntime.exc("sendevent /dev/input/event0 3 1 y")
Runtime.getRuntime.exc("sendevent /dev/input/event0 1 330 1")
Runtime.getRuntime.exc("sendevent /dev/input/event0 0 0 0")       
Runtime.getRuntime.exc("sendevent /dev/input/event0 1 330 0")
Runtime.getRuntime.exc("sendevent /dev/input/event0 0 0 0")
以上六句缺一不可
 
以上方法中,2、3只能touch当前的线程的UI,如果超越界限将拒绝访问,比如你在当前Activity发送对statusBar的点击事件,那么将报错。虽然二者同时存在于同一界面,但属于不同UID线程。1、4方法有点像第三者的操作,所以屏幕任何地方均可用于。但是MonkeyRunner仅适用于黑盒测试,在大部分基于白盒的自动化测试,都是采用创建Instrumentation的APK的方法,所以个人觉得4方法比较巧妙
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值