MonkeyScript常用命令及Uiautomatorview问题解决
一、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,否找不能成功调起。