一、MonkeyScript执行脚本的命令

adb shell monkey -f <scriptfile><event-count>

1.Dispatch Trackball--轨迹球事件

轨迹球事件可帮助我们完成“点击”操作

enventide--事件发生的时间

action--0代表按下,1代表弹起,x和y代表坐标点

2.Dispatch Pointer命令--点击事件

action--0代表按下,1代表弹起,x和y代表坐标点

3.Dispath String命令--输入字符串事件

4.Launch Activity命令--启动应用

package--包名称,activity--要启动的页面名称

5.UserWait命令--等待事件,默认单位是毫秒

6.DispathPress事件--输入查询词,按下键值

实践事例:

启动APP->点击输入框->输入查询词->按下Enter键->点击搜索按钮->等待结果的出现

首先在sdk安装目录tools下找到uiautomatorviewer.bat,启动它。

打开uiautomatorview时,页面报错Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException

解决方法:

(1)首先检查你的jdk版本是不是1.8或1.8以下,因为1.9的jdk不兼容uiautomatorviewer;

(2)进入任务管理器,停止adb.exe-》确保Android设备和PC连接同一个WiFi网络环境,并查看Android设备的IP地址,

然后在CMD界面输入adb connect xxx(IP地址),若connect提示拒绝,则执行adb tcpip 5555 重启adb;

(3)再输入adb devices后,再点击uiautomatorview.bat文件去运行

此时,选中Android设备名称/IP地址,依然提示“Error obtaining UI hierarchy",怎么解决这个问题呢??

(1)截取uix文件

adb shell uiautomator dump /sdcard/screen.uix

adb pull /sdcard/screen.uix

(2)截取截图

adb shell screencap -p /sdcard/sc.png

adb pull /sdcard/sc.png

(3)打开sdk tools目录下的uiautomatorviewer.bat,导入从机器获取的截图和资源文件

如上图输入框控件属性:[150,165][1050,255],意思是右上角坐标(150,165),左下角坐标(1050,255),通过这两个点确定位置。

那么 只要取值在这个范围内即可,那么X在(150,1050)范围取个值,Y在(165,255)范围取个值。

我们将要做的操作是:在搜索工厂输入框,输入”某演示工厂“,点击

另一个问题,如何获取当前页面的ACTIVITY?

要获取当前界面的Activity: adb shell dumpsys activity top | findstr ACTIVITY

根据截图中的属性位置,写出script脚本,保存在D:/mooc.scrpt下

手机上的monkey要执行电脑上的script脚本,先将脚本发送给手机端,执行:切换到D目录下,adb push mooc.scrpt  data/local/tmp/

执行adb shell monkey -f /data/local/tmp/mooc.script。注意:activity要调用必须在其属性前加activity_exported=True,否找不能成功调起。

MonkeyScript常用命令及Uiautomatorview问题解决的更多相关文章

  1. Linux常用命令和常见问题解决<------>第一章

    查看文件下面所有的隐藏目录:ls -al ~ ls -al ~ls -a -l ~可以发现三条命令执行结果是一致的,原因:因为ls为命令 后面的参数要以空格来区分,不论几个空格 shell都会视为一体 ...

  2. Git常用命令及常见问题解决

    $ mkdir xxx       ----创建xxx目录 $ cd learngit     ----切到xxx目录下 $ pwd               ----查看当前文件所在目录 $ gi ...

  3. DG常用运维命令及常见问题解决

    DG常见运维命令及常见问题解决方法 l> DG库启动.关闭标准操作Dataguard关闭1).先取消日志应用alter database recover managed standby data ...

  4. Linux远程连接与常用命令

    要学linux ,一定得用命令界面的,怎么也得是shell语言,用就最难最原始的,用的人都是专家,历史最少也得30年,不管有三七二十一上来就敲ls ,先看看当前目录都有什么.一口专业的linux范儿, ...

  5. 关于ubuntu 16.04 docker常用命令

    1.sudo docker ps -a 查看当前docker实例的信息: CONTAINER ID        IMAGE               COMMAND                 ...

  6. docker系列四之docker镜像与容器的常用命令

    docker镜像与容器的常用命令 一.概述   docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...

  7. 修改环境变量后,导致一些常用命令失效,如ll,ls,vi不能用

    因为一不小心将linux的环境变量修改错误,导致ll之类的常用命令都不能用,很是苦恼,通过百度查询,原来在敲命令时,敲完整的命令路径,还是可以的: 原文地址:http://www.cnblogs.co ...

  8. Linux 常用命令(持续补充)

    常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...

  9. LVM基本介绍与常用命令

    一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...

随机推荐

  1. 利用京东云Serverless服务快速构建5G时代的IoT应用

    10月31日,在2019年中国国际信息通信展览会上,工信部宣布:5G商用正式启动.5G商用时代来了! 5G的商用,使得数据传输速度.响应速度.连接数据.数据传输量.传输可靠性等方面都有了显著的提升,这 ...

  2. git push 现有代码到一个新的分支

    git push origin HEAD:task/xxx-test-local git push的一般形式为 git push <远程主机名> <本地分支名>  <远程 ...

  3. 标准库模块——json模块

    将Python数据类型转换为其他代码格式叫做(序列化),而json就是在各个代码实现转换的中间件. 序列化要求: 1. 只能有int,str,bool,list,dict,tuple的类型支持序列化. ...

  4. CountUp.js 数字跳转效果小插件

    CountUp.js  实现数字跳转效果的小插件 //调用方法 const easingFn = function (t, b, c, d) { var ts = (t /= d) * t; var ...

  5. mysql5.6免安装使用

    一.去MYSQL官网下载MYSQL免安装版,由于我的系统是64位的,所以就下载了64位的Mysql版本 http://cdn.mysql.com//Downloads/MySQL-5.6/mysql- ...

  6. c#中的Task异步编程

    https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/index翻译 1. 引入 Task异步 ...

  7. 系统学习python第一天学习笔记

    1.计算机认识 1.常见的操作系统 win xp win7 win10 window server(服务器) linux centos,图形化界面差 ubuntu , 个人开发(图形化比较好) red ...

  8. SQL基础教程(第2版)第6章 函数、谓词、CASE表达式:6-3 CASE表达式

    ● 虽然CASE表达式中的ELSE子句可以省略,但为了让SQL语句更加容易理解,还是希望大家不要省略. ● CASE表达式中的END不能省略. ● 使用CASE表达式能够将SELECT语句的结果进行组 ...

  9. 关于debug模式下对象toString报空指针的问题。Method threw 'java.lang.NullPointerException' exception. Cannot evaluate cn.gooday.jsh.service.common.dto.RestControllerResult.toString()

    这个如果debug的时候可以一步步走到正常return或者运行的时候有正确返回值.说明代码是没问题的. 出现这个的原因是dto对象里有一些字段查出来是空的,或者这个字段本来在dto里就是冗余字段. 因 ...

  10. python pandas写入excel文件

    pandas读取.写入csv数据非常方便,但是有时希望通过excel画个简单的图表看一下数据质量.变化趋势并保存,这时候csv格式的数据就略显不便,因此尝试直接将数据写入excel文件. pandas ...