MonkeyRunner 实现自动点击截屏后与本地图库进行对比输出
先说下本人是菜鸟,通过网上资料学习,终于调通了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.95)
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()
最后脚本运行,将图片对比后95%部分都不相像的截图自动保存在当前目录
monkeyrunner monkey_snapshot.py E:\test.mr
MonkeyRunner 实现自动点击截屏后与本地图库进行对比输出的更多相关文章
- html5音频audio对象处理以及ios微信端自动播放和息屏后唤醒的判断---可供参考(功能都完整实现了,只是细节还没处理的很好)
// html模版中的 此处结合了weui样式整合的微信手机端片段代码(不可直接粘贴复制进行使用)里面含有一些php的写法,可直接略过..###重点参考js代码### <div> < ...
- [Egret]长按截屏分享、分享截屏图片、本地存储
egret 分享有API可以把一个显示对象树渲染成一个位图纹理,我把它赋值给 HTML 的 Image 元素,就实现了图片的显示,在微信中,通过长按图片可以分享出去.当然在其他浏览器可以保存在本地. ...
- iOS 点击按钮截屏
@interface CaptureViewController () @property (nonatomic, strong) UIImageView *backgrounView; //控制器背 ...
- 关于Unity中GrabPass截屏的使用和Shader的组织优化
GrabPass截屏 可以用来截屏,截屏后把纹理传给下一个通道使用. 1:使用抓屏通道, GrabPass {} 或 GrabPass { “ 纹理名称”}; 使用GrabPass {}后,可以用_G ...
- C# 编写一个简单易用的 Windows 截屏增强工具
半年前我开源了 DreamScene2 一个小而快并且功能强大的 Windows 动态桌面软件.有很多的人喜欢,这使我有了继续做开源的信心.这是我的第二个开源作品 ScreenshotEx 一个简单易 ...
- javascript实现当前页面截屏
javascript实现当前页面截屏 一.前言 有客户要求能对用户当前页面进行指定区域截屏,类似qq截屏的实现效果.比如用户在处理工作的时候,将当前页面录入后的一些信息进行截图下载保存.但又不能安装任 ...
- robotFramework——截屏
测试执行过程中进行截屏并且保存,是任何一款自动化测试工具或者框架必备的功能.那么Robotframework如何进行截屏呢?Robotframework提供了一个“Screenshot”库. 使 ...
- html2canvaces用法,js截屏并且下载
1.首先自己下载引入html2canvaces和jquery(我的demo路径是自己本地的) 2.点击截屏按钮后,跳出层的其他部分是取消保存,点击截取获得的图片区域,表示保存 <!DOCTYPE ...
- ios开发小技巧之摇一摇截屏
1. 监控摇一摇动作 1> 让当前视图控制器成为第一响应者 // 必须先让当前视图控制器成为第一响应者才能响应动作时间 [self becomeFirstResponder]; 2> 实现 ...
随机推荐
- WTL版本ACEdit控件,改写自MFC版,附带源码
自动完成是个很酷也很实用的功能,比如在浏览器地址栏输入几个字母,相关的记录就会在下拉框中陈列出来. 最近在做公司产品UI部分的改善,原版本是MFC做的,我决定用WTL,于是就遇到自动完成控件的问题.遍 ...
- jquery 动态生成元素 事件
$(document).on("click",".detail",function () {});
- 让 idea webstorm phpstorm 能够 识别 thinkphp 的方法(自动提示功能)
1.在/ThinkPHP/Library/Think 目录下 新建一个文件,名为: BaseController.class.php 2.BaseController.class.php 内容为 n ...
- 感知哈希算法 python 3.4
#!/usr/bin/python # -*- coding: UTF-8 -*- #Less than 10 add to list and sort import glob import os i ...
- Weblogic的集群
<收藏自http://www.cnblogs.com/HondaHsu/p/4267972.html> 一.Weblogic的集群 还记得我们在第五天教程中讲到的关于Tomcat的集群吗? ...
- 证明:一个整数a若不能被6整除,则a2+24必能被24整除。(整除理论,1.1.4)
证明:一个整数a若不能被6整除,则a2+24必能被24整除. 证明: 因为,a不能被6整除 所以,a不可以同时被2和3整除 所以,a一定是一个奇数, 所以,令a=2k+1,k是整数: 又因为,a2+2 ...
- 模拟IIC协议时序
IIC是飞利浦公司开发的两线式串行总线,主要应用在单片机和外围电子器件之间的数据通讯. IIC总线优点是节约总线数,稳定,快速,是目前芯片制造上非常流行的一种总线,大多数单片机已经片内集成了IIC总线 ...
- lucene 索引创建步骤
一.步骤: 1.存储位置:1)文件: Directory dir= FSDirectory.open(new File("D:\\LuceneIndex")); 2)内存: new ...
- VS2013程序打包部署详细图解
目录(?)[+] 新建项目 FILE –> New –> Project,如下图所示: 注意:如果 InstallShield Limited Edition Project 显 ...
- ios设置textField只能输入数字用于电话号码
首先在.xib中将UITextField的Keyboard设置为Number Pad,但是使用时键盘会切回别的键盘无法对内容进行校验.通过神奇的百度我知道了通过以下方法可以解决这样的问题: 首先让.x ...