Appium+python自动化(二十一)- 让猴子按你指令大闹手机,让你成为耍猴高手 - Monkey(猴子) - MonkeyScript(超详解)
简介
一年一度的暑假如期而至,每年必不可少的,便是《西游记》这部经典电视连续剧的播出,作为一名90后,对于这部经典剧的情谊,就是观看已成为一种习惯。依然深刻的记得,小时候妈妈为了催促我睡觉,而关掉我的《西游记》,那种哀求不成继而绝望的感觉,至今记忆犹新。长大后只要得空在家,哪怕手里做着其他的事情,也要把电视开着,听一听《西游记》。“你挑着担,我牵着马,迎来日出,送走晚霞——”这首基本人人能唱几句的歌曲,陪着我们一代又一代人,走过童年,青年和少年,甚至中年,或许还有将来的老年。坐在沙发上,当熟悉的音乐响起,心中突然冒出一股莫名的激动,电视里活泼生动的师徒几人,即便都能背出的故事情节,依旧能让我露出微笑。猴哥桀骜不驯,开始也不听命令,大闹天宫也是乱打一番,闯进这里,跑出哪里,一会天上一会地下;后来戴上紧箍咒,老实了。猴哥我们不敢耍,但是猴哥的混血弟弟妹妹我们敢耍。耍猴在中国已有悠久历史,最迟于唐朝已有出现,发源于今河南省新野县。古人把猴子视为马的守护神,常于马厩内养猴子以留住马匹,并让猴子表演猴戏作祭祀之用,因此猴子又有“马留”的别称,此名称至今仍保留在粤语中。日本于奈良时代从中国传入猴戏。后来耍猴的宗教性变淡,有些只是纯娱乐观众,一些小贩为招揽顾客,也会养猴子表演卖技艺,尤其常见于卖武术、卖药等行业。现时香港唯一一只获渔农自然护理署发牌由人饲养的猴子金鹰,其已故前主人陈日标生前以卖药为业,金鹰就在主人卖药时表演。下边这幅图片想必大家都不陌生吧。想必耍猴大家在实地或者电视、电影中都看过,看着耍猴人,发出不同的指令猴子根据指令做出各种搞笑的动作,逗的你开怀大笑。这个不是天生的而是后天训练的。前边讲解的monkey都是随机事件流,Monkey(猴子)在手机里像个无头苍蝇乱蹦乱跳地大闹一番;那么今天宏哥今天就教你如何让猴子按您的指令在手机里大闹,教你如何耍猴——Monkey(猴子)自定义脚本。

耍猴第一式 - 隐藏命令
monkey隐藏的两个命令:
–pck-blacklist-file<黑名单文件> –pck-whitelist-file<白名单文件>
monkey还有一个隐藏的命令那就是:
–f<脚本文件>:可以指定monkey的自定义脚本
一般monkey测试都是随机的测试事件,假如我们需要测试某一个特定的场景,普通的命令很难办到,这是就是需要自定义脚本这个命令了,它的使用方式也是很简单方便的,只要我们按照monkey的脚本规范写好脚本,之后将它保存到手机中,然后运行monkey的时候使用-f 命令指定脚本就行。
耍猴第二式 - monkey自定义脚本格式
1、虽然,Google 官方并没有提供对 MS 详细讲解的 API 文档,但是我们是可以通过源码来分析出 MS 支持的API的。
2、MS 的源码文件是:MonkeySourceScript.java
3、monkey的源码MonkeySourceScript.java类中有一段关于monkey脚本规则的描述MonkeySourceScript.java有兴趣的同学可以去看一下这个源码,这里以 5.1.1 为例子,进行讲解,其实这一块的代码变动非常的少,找一个版本了解即可。我们看一下源码(33行到46行)对j脚本规则描述。
脚本规则的描述
33/**
34 * monkey event queue. It takes a script to produce events sample script format:
35 *
36 * <pre>
37 * type= raw events
38 * count= 10
39 * speed= 1.0
40 * start data >>
41 * captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,0.06666667,0,0.0,0.0,65539,0)
42 * captureDispatchKey(5113146,5113146,0,20,0,0,0,0)
43 * captureDispatchFlip(true)
44 * ...
45 * </pre>
46 */
解释他们的意思
#声明脚本的类型
type= raw events
#脚本的执行次数,由于monkey运行次数在命令设置的,这里的设置是无效的
count= 10
#事件执行时间间隔,这个也是通过命令来设置,这里不起作用
speed= 1.0
#脚本的入口,说明脚本从下面开始执行
start data >>
#下全是monkey命令
captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,0.06666667,0,0.0,0.0,65539,0)
captureDispatchKey(5113146,5113146,0,20,0,0,0,0)
captureDispatchFlip(true)
知道了monkey脚本书写的基本格式,在来看一眼monkey常见脚本API
1.LaunchActivity(包名,Activity名称)
启动被测应用的某个Activity
2.Tap(x,y,TapDuration)
一次单击事件
x,y:是坐标
TapDuration:持续的时间,单位毫秒
3.DispatchPress(keyName)
模拟一个按键
keyName:按键的名称
4.RotateScreen(RotationDegree,peresist)
旋转屏幕
RotationDegree:0~3分别表示顺时针的四个方向
peresist:是否存留
5.DispatchFiip(true/false)
打开或关闭软键盘
6.LongPress()长按2秒
7.PressAndHold(x,y,PressDuration)
模拟长按事件
x,y:点击的坐标
PressDuration:持续时常,单位毫秒
8.DispatchString(input)
输入字符串
input:输入的内容
9.Drag(xStart,yStart,xEnd,yEnd,pCount)
模拟拖动操作
xStart,yStart:开始的坐标值
xEnd,yEnd:结束的坐标值
pCount:滑动事件的次数
10.PinchZoom(pt1xStart,pt1yStart,pt1xEnd,pt1yEnd,pt2xStart,pt2ystart,pt2xEnd,pt2yEnd)
手势缩放事件
pt1xStart,pt1yStart:第一个手指起始的坐标位置
pt1xEnd,pt1yEnd:第一个手指结束的坐标位置
pt2xStart,pt2ystart:第二个手指开始的坐标位置
pt2xEnd,pt2yEnd:第二个手指结束的坐标位置
11.UserWait(sleepTime)
设置睡眠时间
sleepTime:等待时间,单位毫秒
12.DeviceWake()
唤醒设备屏幕
在源码中,所有我们上面介绍的 API 都是以一个 static final 的形式被声明。这里简单就 LaunchActivity 的方法的源码进行讲解,其他的 API 其实也大同小异。
LaunchActivity 的方法的源码讲解
1、浏览器输入源码地址,找到静态字符串LaunchActivity,如图:

2、将鼠标定位到静态字符串LaunchActivity通过ctrl(command)+
Appium+python自动化(二十一)- 让猴子按你指令大闹手机,让你成为耍猴高手 - Monkey(猴子) - MonkeyScript(超详解)的更多相关文章
- Appium+python自动化(十一)- 元素定位秘籍助你打通任督二脉 - 下卷(超详解)
简介 宏哥看你骨骼惊奇,印堂发亮,必是练武之奇才! 按照上一篇的节目预告,这一篇还是继续由宏哥给小伙伴们分享元素定位,是不是按照上一篇的秘籍修炼,是不是感觉到头顶盖好像被掀开,内气从头上冒出去,顿时觉 ...
- Appium+python自动化(十八)- 你难道是猴哥失散多年的混血弟弟还是妹妹???- Monkey事件(超详解)
操作事件简介 Monkey所执行的随机事件流中包含11大事件,分别是触摸事件.手势事件.二指缩放事件.轨迹事件.屏幕旋转事件.基本导航事件.主要导航事件.系统按键事件.启动Activity事件.键盘事 ...
- 【python自动化第十一篇】
[python自动化第十一篇:] 课程简介 gevent协程 select/poll/epoll/异步IO/事件驱动 RabbitMQ队列 上节课回顾 进程: 进程的诞生时为了处理多任务,资源的隔离, ...
- Appium+python自动化20-查看iOS上app元素属性
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素 Mac版的appium1.6的 ...
- Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP
前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itoo ...
- Appium+python自动化20-查看iOS上app元素属性【转载】
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素Mac版的appium1.6的版 ...
- Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP【转载】
前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itoo ...
- Appium+python自动化-查看app元素属性
本文转自:https://www.cnblogs.com/yoyoketang/p/7581831.html 前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道 ...
- Appium+python自动化8-Appium Python API
Appium+python自动化8-AppiumPython API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts conte ...
随机推荐
- 零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II
原文:零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II 本章将延续上一章的范例,步骤解析. 本章将延续上一章的范例,步骤解析 ...
- SynchronizationContext笔记
SynchronizationContext 类是一个基类,可提供不带同步的自由线程上下文. 此类实现的同步模型的目的是使公共语言运行库内部的异步/同步操作能够针对不同的异步模型采取正确的行为.此模型 ...
- Delphi编程中Http协议应用
Http协议的通信遵循一定的约定.例如,请求一个文件的时候先发送Get请求,然后服务器会返回请求的数据.如果需要进行断点传输,那么先发送'HEAD /'请求,其中返回的'Content-Length: ...
- 15 款 jQuery 社交分享插件
过去几年中社交媒体越来越流行了,能够分享音乐.视频.图像甚至是其他的 docs 文档到互联网上去,这样子还能够提高页面的点击量.通常,一些社交媒体插件都能允许你的用户分享你网站上的内容到其他的社交平台 ...
- How Qt Signals and Slots Work(感觉是通过Meta根据名字来调用)
Qt is well known for its signals and slots mechanism. But how does it work? In this blog post, we wi ...
- 【Linux】Linux下跟踪记录每个用户对主机服务器进行的操作
linux中跟踪每个用户对主机的操作,看有人之前已经写过如此shell,可直接参考,参考如下: 1.记录操作信息 这个脚本需添加至/etc/profile 脚本如下: history USER_IP= ...
- flask(四)
1.Flask-Session from flask import session,Flask from flask_session import Session #导入 from redis imp ...
- 【数据结构】31、hashmap=》resize 扩容,不测不知道,一测吓一跳
来来来,今天就跟hashmap杠到底... 不要叫我杠精了,主要是还是被问到hashmap的时候,我并不能很清晰明了得告知这种数据结构到底是一个什么构造,里面细节并不了解 既然这样,我们就把他解析一波 ...
- 深入浅出Ajax
原文(我的GitHub):https://github.com/liangfengbo/frontend-ability/issues/1 学习大纲 理解Ajax的工作原理 Ajax核心-XMLHtt ...
- 基于uReplicator复制的kafka主备集群间的切换策略
一.概述 目前基于中间件uReplicator实现了kafka集群间的迁移复制,可以实现跨区.跨云的kafka集群间复制同步,也可以实现kafka集群的冷热互备架构:在实现集群间同步以后,需要解决一个 ...