MonkeyRunner 如何实现自动点击截屏后与本地图库进行对比输出

上一篇 / 下一篇  2015-08-26 15:08:57

先说下本人是菜鸟,通过网上资料学习,终于调通了MonkeyRunner 如何实现自动点击截屏后与本地图库进行对比输出,以后做静态UI测试就不需要眼睛盯着看图了,这一切交给MonkeyRunner了。

首先通过monkeyrunner录制脚本 test.mr

test.mr

TOUCH|{'x':265,'y':1232,'type':'downAndUp',}
WAIT|{'seconds':5.0,}
TOUCH|{'x':355,'y':189,'type':'downAndUp',}
WAIT|{'seconds':5.0,}
TOUCH|{'x':85,'y':322,'type':'downAndUp',}
WAIT|{'seconds':5.0,}
TOUCH|{'x':371,'y':893,'type':'downAndUp',}
WAIT|{'seconds':5.0,}
TOUCH|{'x':371,'y':893,'type':'downAndUp',}
WAIT|{'seconds':5.0,}
TOUCH|{'x':47,'y':778,'type':'downAndUp',}
WAIT|{'seconds':5.0,}
TOUCH|{'x':657,'y':88,'type':'downAndUp',}
WAIT|{'seconds':5.0,}

然后通过python写自动截屏对比功能 monkey_snapshot.py

#!/usr/bin/env monkeyrunner
# Copyright 2010, The Android Open Source Project
#coding=utf8
import sys 
from com.android.monkeyrunner import MonkeyDevice
from com.android.monkeyrunner import MonkeyImage
from com.android.monkeyrunner import MonkeyRunner

CMD_MAP = { 
 'TOUCH': lambda dev, arg: dev.touch(**arg), 
 'DRAG': lambda dev, arg: dev.drag(**arg), 
 'PRESS': lambda dev, arg: dev.press(**arg), 
 'TYPE': lambda dev, arg: dev.type(**arg), 
 'WAIT': lambda dev, arg: MonkeyRunner.sleep(**arg) 
 }
   
def process_file(fp, device,photo_id):
 for line in fp:
  (cmd, rest) = line.split('|')
  try:
   rest = eval(rest) 
  except:
   print 'unable to parse options'
   continue
  
  if cmd not in CMD_MAP:
   print 'unknown command: ' + cmd
   continue
  
  CMD_MAP[cmd](device, rest)
  print cmd
  pic_name='./shot'+str(photo_id)+'.png'
  result = device.takeSnapshot()
  
  #compare picture
  result2 = MonkeyRunner.loadImageFromFile("E:\MD\shot"+str(photo_id)+".png")
  print "E:\MD\shot"+str(photo_id)+".png"
  flag = result.sameAs(result2,0.8)
  if (flag == False):
   print 'prapre to save new png '+pic_name
   result.writeToFile(pic_name,'png')
   
  
  photo_id+=1
 print "All PlayBack Action Captured,Total:"+str(photo_id)+' PNG Saved'
 print "==============================================================="
 
def main():
 print  "Ok,Now StarRuning MyZXX MonkeyRuner SnopShoot Shell"
 print "==============================================================="
 device = MonkeyRunner.waitForConnection()
 package = 'com.qunsheng.md'
 activity = 'com.qunsheng.md.activity.WelcomeActivity'
 runComponent = package + '/' + activity
 device.startActivity(component=runComponent)
 MonkeyRunner.sleep(30)
 #device.press('KEYCODE_MENU','DOWN_AND_UP')
 #result = device.takeSnapshot()
 #result.writeToFile('./shot5.png','png')
 
 file = sys.argv[1]
 fp = open(file, 'r')
 photo_id=0
 process_file(fp, device,photo_id)
 fp.close();
  
if __name__ == '__main__':
 main()

最后脚本运行,将图片对比后80%部分都不相像的截图自动保存在当前目录

monkeyrunnermonkey_snapshot.pyE:\test.mr

TAG: 如何

 

评分:0

我来说两句

日历

« 2024-05-12  
   1234
567891011
12131415161718
19202122232425
262728293031 

我的存档

数据统计

  • 访问量: 3141
  • 日志数: 2
  • 文件数: 1
  • 建立时间: 2015-08-19
  • 更新时间: 2015-08-26

RSS订阅

Open Toolbar