• MonkeyScript的简单使用


    MonkeyScript的简单使用

    一、 什么是MonkeyScript

    MS 是官方提供的,除了像猴子一样随机乱点之外,还可以通过编写脚本的形式,完成一系列固定的操作。MS 提供一整套完善的 API 来进行支持,主要还是基于坐标点的操作,包含常用的:点击、长按、输入、等待等操作。

    二、 MonkeyScript的使用

    1. 编写MonkeyScript的测试脚本。

    MS脚本只要是文本即可,不关心后缀是什么,所以编写时不要添加后缀,保存文本格式即可。

    MS 脚本虽然有一些指定的 API ,但是也有一些固定的脚本头,需要写在脚本的最前面。

    type=user

    count = 1

    speed = 1.0

    start data >>

    在脚本中,脚本头是一直不变动的,为了避免写错,可以直接复制粘贴最保险。在 start data>> 之后就可以正式开始编写 monkey 脚本了,在脚本中,使用 # 号,对单行进行注释。

    MonkeyScript是需要指定Activity(当前app展示的界面)的,获取当前指定界面Activity名称的指令为adb shell dumpsys activity | grep mFocused。

    下面以测试登录功能为例:

    LaunchActivity(Activity)

    UserWait(1000)

    DispatchPointer(0,0,0,303,312,0,0,0,0,0,0,0)

    DispatchPointer(0,0,1,303,312,0,0,0,0,0,0,0)

    UserWait(1000)

    DispatchString(1234566)

    UserWait(100)

    //输入密码

    DispatchPointer(0,0,0,345,393,0,0,0,0,0,0,0)

    DispatchPointer(0,0,1,345,393,0,0,0,0,0,0,0)

    UserWait(100)

    DispatchString(1234567)

    UserWait(1000)

    //点击空白处让键盘消失

    DispatchPointer(0,0,0,100,100,0,0,0,0,0,0,0)

    DispatchPointer(0,0,1,100,100,0,0,0,0,0,0,0)

    UserWait(1000)

    //点击登录按钮

    DispatchPointer(0,0,0,361,507,0,0,0,0,0,0,0)

    DispatchPointer(0,0,1,361,507,0,0,0,0,0,0,0)

    UserWait(3000)

    脚本解释:

    首先启动你要测试的界面,此处为登录界面,登录界面有三个控件,用户名的textField,密码的textField,和登录按钮。

    LaunchActivity()

    作用为来到登录界面

    UserWait(1000)

    等待1秒以后执行下一个操作

    DispatchPointer(0,0,0,303,312,0,0,0,0,0,0,0)

    DispatchPointer(0,0,1,303,312,0,0,0,0,0,0,0)

    DispatchPointer点击用户名的textField,只需关注3,4,5这三个参数即可,第三个参数为0表示点击了textField ,为1表示松开了textField,4,5两个参数分别为用户名textField 的x,y坐标。

    DispatchString(123456)

    在用户名的textField中输入123456用户名

    按照上面的操作在密码的textField输入密码,点击登录按钮,整改登录测试就完成了,如果需要继续测试登录后的界面则需要从新启动新的Activity。

    //登录成功后来到首页点击发布作业功能(具体什么功能和第4,5个参数设置的值有关)

    LaunchActivity(Activity)

    UserWait(1000)

    DispatchPointer(0,0,0,650,182,0,0,0,0,0,0,0)

    DispatchPointer(0,0,1,650,182,0,0,0,0,0,0,0)

    UserWait(1000)

    Drag(500,1500,500,500,12)
    #向上滑动

    将写好的脚本保存到本地。

    2. Monkey 启动 MonkeyScript 的命令如下:

    adb shell monkey -f <MonkeyScript> <EventCount>

    <MonkeyScript>指你编写的MonkeyScript脚本,

    <EventCount>指Monkey事件,例如执行次数,日志详情等。

    具体指令:

    1. adb shell mkdir /sdcard/script 在设备上创建script文件夹用于存放脚本
    2. 将本地脚本文件push到设备中上面创建的文件夹中。例如adb push /Users/userName/Desktop/testLogin空格/sdcard/script,/Users/userName/Desktop/testLogin就是你脚本在本地的存放路径。
    3. 执行adb shell monkey -f /sdcard/script/你的脚本名称 –v –v 10 >C:monkey.txt即可,>C:monkey.txt为日志输出路径。

     其他简介

    LaunchActivity(pkg_name, cl_name):启动应用的Activity。参数:包名和启动的Activity。

    Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。

    DispatchPress(keyName): 按键。参数: keycode。 详细的Android Keycode列表: http://blog.csdn.net/feizhixuan46789/article/details/16801429

    RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。

    DispatchFlip(true/false): 打开或者关闭软键盘。

    LongPress(): 长按2秒。

    PressAndHold(x, y, pressDuration): 模拟长按事件。

    DispatchString(input): 输入字符串。

    Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作。

    PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。

    UserWait(sleepTime): 休眠一段时间

    DeviceWakeUp(): 唤醒屏幕。

    PowerLog(power_log_type, test_case_status): 模拟电池电量信息。

    WriteLog(): 将电池信息写入sd卡。

    RunCmd(cmd): 运行shell命令。

    DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,发送单个手势。

    DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 发送按键消息。

    LaunchInstrumentation(test_name,runner_name): 运行一个instrumentation测试用例。

    DispatchTrackball: 模拟发送轨迹球事件。

    ProfileWait: 等待5秒。

    StartCaptureFramerate():  获取帧率。

    EndCaptureFramerate(input): 结束获取帧率。

  • 相关阅读:
    @try { } @catch (NSException *exception) {} @finally {}
    键盘点出来就退不掉了,你可以把这几句加到有键盘的控制器里
    测试最新的微信iOS SDK 报错误
    堆、栈知识小结
    PV操作
    continue & break
    dll的def文件与__declspec(dllexport)导出函数方式比较
    setupapi.h和setupapi.lib該如何使用
    批量缺少头文件的解决办法(添加包含目录)
    易犯错误总结:
  • 原文地址:https://www.cnblogs.com/yizhou-xu/p/8072813.html
Copyright © 2020-2023  润新知