前两天组内一同事让我帮忙写个自动化脚本,操作很简单,就是打开测试页面中的各个链接,但有个特殊需求,就是点击链接过程中按下去之后要有一个60~100ms的延迟,之后才离开焦点。
思考了一圈可用的开源工具后,感觉只有monkeyrunner最方便,因为已经有现成的方法(device.touch)和参数(DOWN_AND_UP)可用,但实际操作过程中发现,device.touch(100,100,'DOWN')并不是预期的一直按下状态。查看了monkeyrunner的源码后,看到DOWN,UP和DOWN_AND_UP都是MonkeyDevice下的方法,于是使用了这样的形式使用:device(100,100,MonkeyDevice.DOWN),测试成功。
总结,MonkeyRunner的长按方式:
device(100,100,MonkeyDevice.DOWN)
MonkeyRunner.sleep(1)
device(100,100,MonkeyDevice.UP)
当然,也可以通过drag方法实现:device.drag((100,100),(100,100),1,10)
两种方式效果一样,但实现原理是不同的,可以根据自己需求选择。
附上帮助同事实现的脚本:
import random from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner import MonkeyDevice as md from com.android.monkeyrunner import MonkeyImage as mi device=mr.waitForConnection() #创建测试目录 device.press('KEYCODE_HOME','DOWN_AND_UP') mr.sleep(1) #打开新浪 device.touch(120,200,'DOWN_AND_UP') mr.sleep(15) url_x=55 url_y=200 #分别点击导航的各个链接 for i in range(1,19): #长按实现方式 #device.drag((url_x,url_y),(url_x,url_y),0.2,1) randomNum=random.uniform(0.06,0.1) device.touch(url_x,url_y,md.DOWN) mr.sleep(randomNum) device.touch(url_x,url_y,md.UP) print "sina:",i print "sleep time:",randomNum mr.sleep(15) device.press('KEYCODE_BACK','DOWN_AND_UP') url_x+=85 if url_x==480: url_x=55 url_y+=45 else: print 'end' |
最新内容请见作者的GitHub页:http://qaseven.github.io/